![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
Ни как не пойму почему xml_parse_into_struct в PHP4 и PHP5 работает по разному? Вернее не работает в PHP5
вот упрощённый код
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
В чем выражается это "не работает"?
|
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
В 4-м выдаёт весь перечень, в 5-м всё пусто (почти)
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Странно.
|
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
сам знаю что странно. Вот результат в 5-м
Array ( [0] => Array ( [tag] => KABAK [type] => open [level] => 1 [value] => ) [1] => Array ( [tag] => ID [type] => complete [level] => 2 [value] => 0 ) [2] => Array ( [tag] => KABAK [value] => [type] => cdata [level] => 1 ) [3] => Array ( [tag] => NAME [type] => open [level] => 2 ) ) Само сабой что данных должно быть нааамного больше -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
Ещё будут у кого какие мысли? Попобуйте код, может у кого по другому работает
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 2 Всего: 73 |
Red Dragon, ИМХО в PHP 5 нужно использовать DOM или SimpleXML.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
IZ@TOP
да вот переписываю код... но почему этот не работает? в документации вроде 5-й поддерживает -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 2 Всего: 73 |
Gold Dragon, на самом деле там у них с разными версиями разные функции по разному работают (это я про чилдренов РНР 5). Возможно есть какие-то глюки. В общем думаю будет оптимальным и более разумным забыть про xml функции и пользоваться DOM/SimpleXml и прочими нововведениями.
Добавлено @ 15:35 Офф: Gold Dragon, а ты разве не Red Dragon?? -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
да вот и я так подумал... Попробывал SimpleXml - СУПЕР!!! Вот переписываю код. А вот в 4-м xml_parse_into_struct больше всего мне нравилась
PS ну так хватит краснеть за всех -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| dipsy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 13.1.2005 Где: Нижний Новгород Репутация: нет Всего: нет |
в первый раз вижу использование xml в php. интересно. всегда мечтал с xml разобраться.
у меня php 4.4.0 в примере тэг kabak один не понятно вот что:
почему в массиве так много kabak-ов оказалось? Сорри, если вопрос глупый. |
|||
|
||||
| G0rinich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.8.2006 Репутация: нет Всего: 1 |
xml_parse_into_struct() берет XML и разбирает его в массив. При этом в массив попадают не только все полезные данные, но и информация обо всех встреченных тегах. В полученном массиве хранится дерево. Когда РНР5 только еще зарождался и SimpleXML() использовать просто не стоило, а на хостингах о РНР5 можно было только мечтать мне приходилось разбирать XML данные и вносить их в БД. Размер XML файла был ~ 15Mb, и при этом к БД выполнялось порядка 210000 запросов.
Для выполнения этой задачи я выбрал xml_parse_into_struct(). Т.к. это казалось самым простым решением. Для того чтобы то, что эта ф-я возвращает, можно было удобно перебрать, я создавал дерево на основе многомерного массива, благо РНР позволяет создавать и работать с такими структурами ). Для создания этого дерева пришлось написать не тривиальную рекурсивную функцию. В итоге вся работа занимала аж 300 секунд. Естественно это меня не устраивало, т.к. скрипт на сервере работает порядка 30 сек. (Заодно был замечен один прикол РНР и я больше не передаю в функцию большие массивы по ссылке. По идее передавать массив, в котором хранится порядка 14мб по ссылке должно было ускорить процесс, но на самом деле только сильно его тормозило (рекурсия срабатывала порядка 200000 раз). Получая доступ к массиву как к глобальной переменной сократило время выполнения почти в 10! раз. Но и это меня не устраивало.) В связи с этим пришлось изучать другие способы работы с XML. И используя DOM модель удалось работу скрипта уложить в 15!!! секунд, правда скрипт пришлось максимально облегчить, но и логика его стала гораздо проще. Так что делайте выводы о целесообразности использования тех или иных инструментов ))). SimpleXML() удобен, но использовать его оправдано на маленьких файлах, а если файлы большие и нужна скорость, то лучше с ними работать руками. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: X технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |