Intereting Posts
Назначение значений по умолчанию для Smarty с использованием объектно-ориентированного стиля Установка плагина Uploader для CakePHP 2.x URL-адрес PHP & Hash / Fragment URL-адреса Возможно ли создать файл * .sh с помощью PHP CLI и получить доступ к экспортированным Env vars в PHP-скрипте? Изменить шрифт, используемый ImageString Не удалось установить конфигурацию безопасности FOSUserBundle + HWIOAuth Неизвестная функция в PHP Netbeans – как подавить? Как удалить элемент массива, а затем повторно индексировать массив? Проверьте, заканчивается ли строка с номером в PHP Можно ли уменьшить переменную в MySQL? Недопустимый аргумент для foreach (). WordPress Добавление нескольких полей ввода на основе динамического значения в PHP получение выходного и выходного статуса из shell_exec () почему существуют периоды в php Ошибка «Вызов неопределенного метода stdClass :: delete ()» при попытке удалить строку в Laravel

соскабливание страницы без RSS для создания фида

Я хочу очистить страницу, которая регулярно обновляется (добавляя новые статьи с той же структурой, что и предыдущие), чтобы генерировать RSS-канал.

Я могу написать код для простого анализа страницы, но как я могу эмулировать пинг, т. Е. Когда страница обновляется, как может знать мой PHP-скрипт? Должна ли быть работа на cron?

(Вероятно, дублированный вопрос, который я знаю, но искал прямой ответ без везения. Ближе всего я получил Scrape и генерировал RSS-канал , в котором есть скрипт скремблирования, но нет информации о том, как заставить его автоматически реагировать на изменения на странице)

В зависимости от системы, может быть, может быть, нелегко сказать, когда последняя страница была обновлена.

Чтобы проверить изменения, вы можете проверить заголовки HTTP для заголовка Last-Modified на странице. Не все системы правильно обновляют заголовок, поэтому это может быть не полезно. Также возможно, что немодифицированная страница вернет статус 304 (Not Modified), особенно если вы If-Modified-Since заголовок If-Modified-Since в своем запросе.

Я бы определенно запускал что-то подобное на работе cron. Хотя возможно, что это возможно только из заголовков, если вам нужно обновить страницу, ваш пользователь будет долго ждать (в относительном выражении) для вашего сервера, чтобы выйти, получить страницу, выполнить обработку и отправить ответ. Я был бы удивлен, если бы вы не время от времени сталкивались с тайм-аутами с использованием подхода, отличного от cron.

У вас может быть запущен crontab, который проверяет, обновлен ли сайт (либо, проверяя последние измененные заголовки, если они доступны, либо проверяя интересующий вас контент).

Если ваш crontab проверяет сайт, он обнаруживает изменение содержимого, он может добавить сообщение в очередь (например, Zend_Queue http://framework.zend.com/manual/en/zend.queue.example.html ) , то у вас может быть рабочий, который просто работает через сообщения либо до достижения предела времени / данных, либо до тех пор, пока очередь не будет пуста.

Вы также можете проверить ответ на запрос HEAD, если строка Last-Modified отсутствует, для наличия и значений линий ETag и Content-Length. Если ни одно из них не соответствует предыдущим значениям (которые вы сохранили), то контент, скорее всего, изменился. Вы можете добавить к ним любые другие строки заголовка ответа , которые указывают на изменение.