Я использую некоторые PHP-скрипты из FeedForAll, чтобы объединить RSS-каналы (RSSmesh) и отображать их как HTML (RSS2HTML).Я пытаюсь запустить некоторые PHP-скрипты как CLI, а не через HTTP. Как заставить их играть хорошо?
Поскольку я намерен интенсивно запускать эти сценарии и не хочу, чтобы полученные HTTP-запросы и пропускная способность учитывались в моей квоте на хостинг, я в процессе перехода к их запуску на сервере веб-хоста в зонтике PHP «пакетный» сценарий, и вызываем этот скрипт через cron (кстати, это сервер Linux).
Вот (рабочий) запрос выборки через HTTP:
Это даст желаемый результат HTML. Пример того, как я хочу, чтобы это работало в командной строке:
/srv/customers/mycustomer#/mydomain.com/www/a/rss2htmlcore/rss2html2-cli.php /srv/customers/mycustomer#/mydomain.com/www/a/myapp/xmlcache/feed.xml /srv/customers/mycustomer#/mydomain.com/www/a/template.html
Это с правильной линией хижину добавлен в «rss2html2-cli.php». Я мог бы точно указать исполняемый файл («/ usr/local/bin/php») в запросе, я сомневаюсь, что это имеет значение, потому что я могу без проблем запускать другой скрипт (который я написал сам).
Теперь RSS2HTML и RSSmesh отличаются тем, что для стартеров они включают в себя вторичные файлы, например, оба включают сценарий синтаксического анализатора XML, и я подозреваю, что это то, где я немного нахожусь над головой ,
Сейчас я звоню Exec() из "зонтика" пакетного сценария, например, так:
exec("/srv/customers/mycustomer#/mydomain.com/www/a/rss2htmlcore/rss2html2-cli.php /srv/customers/mycustomer#/mydomain.com/www/a/myapp/xmlcache/feed.xml /srv/customers/mycustomer#/mydomain.com/www/a/template.html", $output)
Но вывод не производится. Каков наилучший способ сделать это и что «gotchas» я должен иметь в виду? Правильно ли подходит метод exec()? Он отлично работает для другого (простого) скрипта, но записывает собственный результат. Для этого я хочу получить вывод и записать его в файл из зонтичного скрипта, если это возможно. Я также пробовал буферизацию вывода, но безрезультатно.
Должен ли я обратить внимание на что-либо конкретное в отношении включений? Сейчас они указаны в сценариях как include_once("FeedForAll_XMLParser.inc.php");
, и указанные файлы действительно находятся в одной папке.
Дополнительная информация:
-Этот является сервером Linux.
-У меня нет прямого доступа к оболочке, поэтому я не могу проверить вещи непосредственно в командной строке, все через crontab.
-Я признаю, что поддержка сценариев FeedForAll оставляет желать лучшего, но я хотел бы продолжать использовать их скрипты, если это вообще возможно, хотя бы потому, что я их знаю и использую их некоторое время , Я просмотрел Simplepie, но сценарии FFA делают некоторые вещи, на которые я не видел очевидных решений для Simplepie, например ограничение количества элементов на отдельный канал (RSSmesh) или ограничение длины описания (RSS2HTML).
-Yahoo! Трубы отсутствуют, они слишком долго кэшируют свои данные для моего приложения.
Если вы хотите взглянуть на код, here являются скрипты как текстовые файлы.RSS2HTML2 и RSSmesh являются скриптами FeedForAll, FeedForAll_XMLParser ... является включенным парсером. Обратите внимание, что я еще не исправил их для обработки $ argv и т. Д. Однако у меня есть «scraper-universal-rss-cli», который отлично работает с CLI.
Если у кого-то есть мысли поделиться этим, было бы очень полезно. Заранее спасибо.
Вы правы. Спасибо, что помог мне в правильном направлении. – gnfti