Просмотр полной версии : php4 dom xml(gnome extension) и большие файлы(+)
Собственно какая техника работы с большими файлами через DOM XML?
файл на 4-5 МБ, при парсинге кушает очень много ОП, например, на хостинге у меня просто вываливается скрипт, т.к. стоит ограничение на доступную ОП(скрипт запускается через php-cli).
понимаю, что есть SAX, но не люблю его реализауию на php всеми "фибрами души"...
есть ли выход? или это утопия?
на хостинге у меня просто вываливается скрипт, т.к. стоит ограничение на доступную ОПКак ты понимаешь выход здесь только один - увеличить размер допустимой памяти.
Хотя можно поизобретать велосипед... например почему у тебя XML такой большой? Наверно много CDATA/BASE64? Пройди по файлу предварительно заменив такие блоки на что-нибудь вроде <link token="18789782" />, а сами данные сложи в файл/файлы. Потом (RPC/preg_replace) замени обратно.
последнее время много работаю с контент провайдерами мобильной мультимедии(java игры, мелодии, картинки т.д.), дамп базы они предоставляют в xml. т.к. xml документ составлен, как Бог на душу положит, то мне приходиться собирать свою свобственную базу каждый раз в ручную.
нет ли в php xml reader-а?(побыстрее), скажем в .NET есть класс XmlReader, который двигается по документу только вперед и предоставляет доступ только на чтение. Мне бы такой подошел идеально.
Видимо, придеться все-таки обратиться к SAX:( Или переписать на другом языке, скажем на С++...
нет ли в php xml reader-а?(побыстрее)Есть SimpleXML. Правда только в php5.
скажем в .NET есть класс XmlReader, который двигается по документу только вперед и предоставляет доступ только на чтениеXML Parser. Для выборки данных, например в массив, его вполне достаточно.
переписал все прасеры под simpleXML.
выигрыши:
1. размер кода стал примерно на треть меньше.
2. прекарсно работает с большими файлами.
3. писать парсеры проще и быстрее.
еще раз беждаюсь что php5 рулит:)
теперь перевожу весь код, который работает с xml на 5-ую версию.
теперь перевожу весь код, который работает с xml на 5-ую версиюРулит, если бы не некоторые трудности:
- Не все клиенты хостятся у меня/тебя => не везде стоит php5.
- Проблема защиты кода. Zend Enc./SG не хакнули (лицензия 3000$-5000$), а бесплатная альтернатива Turck MMCache сдохла, да и loader мало где стоит.
- На nix* были замечены отказы php4-приложений, даже со включенной ZE1-совместимостью.
я поставил себе php5-cgi(без участия хостера).
защита кода. я работаю в конторе, поэтому код по идее не мой.
vBulletin® v3.8.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd.