imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование > Для профессионалов
Опции темы
Старый 18.12.2004, 01:03     # 1
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
php4 dom xml(gnome extension) и большие файлы(+)

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

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

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

есть ли выход? или это утопия?
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 18.12.2004, 11:06     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

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

Хотя можно поизобретать велосипед... например почему у тебя XML такой большой? Наверно много CDATA/BASE64? Пройди по файлу предварительно заменив такие блоки на что-нибудь вроде <link token="18789782" />, а сами данные сложи в файл/файлы. Потом (RPC/preg_replace) замени обратно.
RaZEr вне форума  
Старый 18.12.2004, 14:05     # 3
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

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

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

Видимо, придеться все-таки обратиться к SAX Или переписать на другом языке, скажем на С++...
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 18.12.2004, 14:15     # 4
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
нет ли в php xml reader-а?(побыстрее)
Есть SimpleXML. Правда только в php5.

Цитата:
скажем в .NET есть класс XmlReader, который двигается по документу только вперед и предоставляет доступ только на чтение
XML Parser. Для выборки данных, например в массив, его вполне достаточно.
RaZEr вне форума  
Старый 22.12.2004, 15:54     # 5
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
переписал все прасеры под simpleXML.

выигрыши:

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

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

теперь перевожу весь код, который работает с xml на 5-ую версию.
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 22.12.2004, 15:59     # 6
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
теперь перевожу весь код, который работает с xml на 5-ую версию
Рулит, если бы не некоторые трудности:
- Не все клиенты хостятся у меня/тебя => не везде стоит php5.
- Проблема защиты кода. Zend Enc./SG не хакнули (лицензия 3000$-5000$), а бесплатная альтернатива Turck MMCache сдохла, да и loader мало где стоит.
- На nix* были замечены отказы php4-приложений, даже со включенной ZE1-совместимостью.
RaZEr вне форума  
Старый 22.12.2004, 17:44     # 7
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
я поставил себе php5-cgi(без участия хостера).

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


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 00:03.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.