PDA

Просмотр полной версии : php4 dom xml(gnome extension) и большие файлы(+)


Sheryld
18.12.2004, 01:03
Собственно какая техника работы с большими файлами через DOM XML?

файл на 4-5 МБ, при парсинге кушает очень много ОП, например, на хостинге у меня просто вываливается скрипт, т.к. стоит ограничение на доступную ОП(скрипт запускается через php-cli).

понимаю, что есть SAX, но не люблю его реализауию на php всеми "фибрами души"...

есть ли выход? или это утопия?

RaZEr
18.12.2004, 11:06
на хостинге у меня просто вываливается скрипт, т.к. стоит ограничение на доступную ОПКак ты понимаешь выход здесь только один - увеличить размер допустимой памяти.

Хотя можно поизобретать велосипед... например почему у тебя XML такой большой? Наверно много CDATA/BASE64? Пройди по файлу предварительно заменив такие блоки на что-нибудь вроде <link token="18789782" />, а сами данные сложи в файл/файлы. Потом (RPC/preg_replace) замени обратно.

Sheryld
18.12.2004, 14:05
последнее время много работаю с контент провайдерами мобильной мультимедии(java игры, мелодии, картинки т.д.), дамп базы они предоставляют в xml. т.к. xml документ составлен, как Бог на душу положит, то мне приходиться собирать свою свобственную базу каждый раз в ручную.

нет ли в php xml reader-а?(побыстрее), скажем в .NET есть класс XmlReader, который двигается по документу только вперед и предоставляет доступ только на чтение. Мне бы такой подошел идеально.

Видимо, придеться все-таки обратиться к SAX:( Или переписать на другом языке, скажем на С++...

RaZEr
18.12.2004, 14:15
нет ли в php xml reader-а?(побыстрее)Есть SimpleXML. Правда только в php5.

скажем в .NET есть класс XmlReader, который двигается по документу только вперед и предоставляет доступ только на чтениеXML Parser. Для выборки данных, например в массив, его вполне достаточно.

Sheryld
22.12.2004, 15:54
переписал все прасеры под simpleXML.

выигрыши:

1. размер кода стал примерно на треть меньше.
2. прекарсно работает с большими файлами.
3. писать парсеры проще и быстрее.

еще раз беждаюсь что php5 рулит:)

теперь перевожу весь код, который работает с xml на 5-ую версию.

RaZEr
22.12.2004, 15:59
теперь перевожу весь код, который работает с xml на 5-ую версиюРулит, если бы не некоторые трудности:
- Не все клиенты хостятся у меня/тебя => не везде стоит php5.
- Проблема защиты кода. Zend Enc./SG не хакнули (лицензия 3000$-5000$), а бесплатная альтернатива Turck MMCache сдохла, да и loader мало где стоит.
- На nix* были замечены отказы php4-приложений, даже со включенной ZE1-совместимостью.

Sheryld
22.12.2004, 17:44
я поставил себе php5-cgi(без участия хостера).

защита кода. я работаю в конторе, поэтому код по идее не мой.