Unserialized DOM element не хочет appendиться

Greendrake

Новичок
Unserialized DOM element не хочет appendиться

PHP-скрипт строит DOM-дерево.
Некоторые из элементов этого дерева меняются очень редко (а строятся довольно долго), поэтому есть смысл воспользоваться фичей serialize, сохранить этот элемент в базе, и каждый раз не создавать его снова, а вытаскивать из базы готовый с помощью unserialize.

Проблема: элемент (объект), полученный с помощью unserialize, ни в какую не хочет прикручиваться к основному дереву.

Warning: append_child(): Underlying object missing or of invalid type in C:\server......

Это PHP4 (в пятом можно было бы попробовать importNode(), но у хостера пока только четвёртый).

Как быть?
Неужели придётся кэшировать не объекты, а XML-текст?
 

slach

Новичок
сделай var_dump объекта созданного в живую
и сравни его с var_dump объекта, который ты достал из базы

с DOMXML и Сериализацией, вообще плохо обстоит дело...

можно ради эксперимента помучиться например еще и с SRM
оно вроде как должно вообще хорошо объекты кешировать

но вообще да, единственный более или менее приемлимый вариант кешировать XML строку...
 

Greendrake

Новичок
Автор оригинала: slach
сделай var_dump объекта созданного в живую
и сравни его с var_dump объекта, который ты достал из базы
Сделал

в обоих случаях получается вот такая строка

object(domelement)(4) { ["type"]=> int(1) ["tagname"]=> string(8) "mainmenu" [0]=> int(44) [1]=> int(87907192) }

И различается она только вот этой восьмизначной цифрой в конце. В ней собака порылась?

Автор оригинала: slach
но вообще да, единственный более или менее приемлимый вариант кешировать XML строку...
Как сделать XML-строку из целого dom-документа - известно, но как её сделать из одного элемента? И как потом из этой строки воссоздать элемент, да так, чтобы он прикрутился к основному дереву? :confused:
 

tony2001

TeaM PHPClub
сериализовать internal objects нет смысла - практически все несут в себе некие ресурсы, которые невозможно представить в текстовом виде.
это относится и к DOM.
 
Сверху