Intereting Posts
Почему, если я зарегистрировался на своем веб-сайте как зарегистрированный пользователь, я не могу получить доступ к другим страницам после установки правил сеанса? Почему вы не получили уведомление с веб-узла с диска? Magento – базовый стол или вид не найдены Не удается отправить письма с xampp localhost simplexml_load_file () : начальный тег ожидается, '<' не найден в Веб-хосты Bigcommerce не работают Woocommerce content-single-product template override не работает Тестирование на закрытие PHP без ссылки на внутренний класс Closure Как мне получить доступ к этому объекту с помощью дефисного имени? Общий полиморфизм с примерами PHP Как получить переменную из родительского URL или родительского iframe? PHP Прерывание при создании большого .zip-файла PHP / MySQL: как создать раздел комментариев на вашем сайте При загрузке файла Laravel требуется подтверждение проверки, даже если файл присутствует Как включить Php Mcrypt на Mac Os X Lion 10.7.4

Узел больше не существует с помощью SimpleXML

Попытка кэшировать xml-файл, используя встроенную функцию wordpress, называемую get_transient, но я получаю ошибку php:

unserialize () [function.unserialize]: Узел больше не существует

//check the db to see if it exists ( get_transient is a WordPress function) if (false === ($response_xml = get_transient('stats_from_xml_feed'))){ $request_url = "http://example.com/feed.xml"; $request_url = urlencode($request_url); $response_xml = @simplexml_load_file($request_url); //kill request if connection problem if ($response_xml === FALSE){ exit ('could not connect'); } else { // here we throw it into the WordPress temp DB using set_transient for 12 hours set_transient('stats_from_xml_feed', $response_xml, 60*60*12); //some output $res = $response_xml; $name = $res->name; echo $name; } 

Solutions Collecting From Web of "Узел больше не существует с помощью SimpleXML"

Ваш $response_xml является экземпляром класса SimpleXMLElement . SimpleXMLElement не должен быть (un) сериализован, потому что он обертывает ресурс внутри объекта.

Вместо этого сериализуйте что-то, что с удовольствием выдержит процесс; исходный ответ из фида, все / часть XML после его загрузки в SimpleXMLElement и использование asXML() , массив asXML() значений (вероятная строка) или какая-либо другая структура, которая может быть сериализована.

Следует учитывать, что вы увидите unserialize(): Node no longer exists предупреждений в «более старых» (для использования термина «свободно») версий PHP. Начиная с PHP 5.3.2, поведение, измененное для Exception с сообщением Serialization of 'SimpleXMLElement' is not allowed .

Вы не должны (не можете?) serialize и unserialize объект SimpleXML. Это XML, для начала это формат сериализации. Это не начало!

Вызовите метод asXML чтобы получить фактический XML, а затем сохраните его.