причем тут wordpress?
парсинг надо делать через php аля https://www.php.net/manual/ru/simplexml.examples-basic.php
а wordpress нужен, чтобы закэшировать результат, тут вам лучше использовать транзитный кэш. считывать заново при любом обновлении страницы абсолютно не вариант — ваш сайт будет тормозить незнамо как. так что транзитный кэш с результатами на 8-48 часов, вы уже там сами решите, насколько часто информация в xml обновляется и сколько она будет актуальной.
Данные в том файле обновляются постоянно (лайв-результаты спортивных событий), поэтому транзитный кэш не совсем подходит. Как тогда поступить?
Модератор
Юрій
(@yube)
поэтому транзитный кэш не совсем подходит. Как тогда поступить?
Не использовать транизитный кэш.
Модератор
Юрій
(@yube)
Целесообразность кэширования можно оценить по количеству запросов к сайту за то время, в которое информация остается неизменной и актуальной.
Не использовать транизитный кэш.
Тогда на сайт будет колоссальная нагрузка. В JS нет способа как-то эмулировать IP-адрес, чтобы получить доступ к файлу?
Модератор
Юрій
(@yube)
В JS нет способа как-то эмулировать IP-адрес
Нет.
Можно не парсить xml, а проксировать. Нагрузка на сервер, конечно, будет, но несравненно меньше, чем при парсинге.
для сайтов, которые продают такой доступ очень странно не иметь js api.
xml файл с доступом по ip — это очень странно.
вопрос даже не в нагрузке, а в том, что ваш сайт будет тормозить. быстро соединиться с чужим сервером, скачать xml, обработать его — это временные задержки до секунды в лучшем случае.
xml файл с доступом по ip — это очень странно
Полностью согласен.
быстро соединиться с чужим сервером, скачать xml, обработать его — это временные задержки до секунды в лучшем случае.
Да, задержки бывают и по 2-3 секунды.
Спасибо вам за разъяснения. Для себя делаю вывод, что лучше найти сервис с доступом js api и не ломать голову.
Тему закрываю.
Модератор
Yui
(@fierevere)
永子
вам уже отчасти сказали про это.
Лучше всего по системному cron скачивать файл, парсить его вне WordPress, любыми средствами, лучше всего, если использовать программу на C/C++, нежели языках высокого уровня, но сойдет в принципе любой парсер, с которым вы сможете совладать, Perl, Python…
Промежуточный результат можно сохранять для WP например в отдельной таблице MySQL, а лучше в Redis (или ином Key-Value storage), в зависимости от того, какое представление результатов вы там парсите, и как вам нужно делать выборку и нужно ли.
В любом случае вам потребуется проделать много работы или заказать её,
т.к. готового для WP наверняка «под ключ» для вашей задачи ничего нет.
а без посторонних программ нельзя?
у mysql вроде бы есть LOAD XML, встроенный крон — Event Scheduler.
конечно, для live-результатов задержка и 5 сек много, но все же лучше чем ничего.
я просто не в курсе работы LOAD XML в mysql, мне интересно — это по ресурсоемкости вообще имеет право на жизнь или нет?
Модератор
Yui
(@fierevere)
永子
https://dev.mysql.com/doc/refman/5.5/en/load-xml.html
парсер на C/C++, libxml или expat, поэтому с производительностью у него быть никаких проблем не должно, работает в отдельном потоке, блокирует таблицу до завершения процесса
Это хороший вариант.
Модератор
Юрій
(@yube)
мне интересно — это по ресурсоемкости вообще имеет право на жизнь или нет?
mysql load xml на порядок веселее, чем php simplexml и построчное внесение в БД. Проверено на гигабайтных файлах. simplexml вообще тормоз и обжора 🙂