cronjob help - необходимо обновить клиентский сайт "в реальном времени"

Я застрял с проектом, это проект быстрого исправления, и мне нужна помощь специалиста по этому вопросу, пожалуйста. У моих клиентов есть два отдельных сайта.

1. http://abc123.com/using-cron-job-update-this-folder.txt <-- I'm working on this
2. http://bw.aaaaaa.com/blah.txt                           <-- Client's 2nd site where some txt gets updated almost twice a day, on this folder blah.txt

Мне нужен фрагмент php для выполнения cronjobполучить текст из site2 - http://bw.aaaaaa.com/blah.txt, в режиме реального времени и обновления site1 - http://abc123.com/using-cron-job-update-this-folder.txt как только любой текст будет обновлен на сайте 1.

1 ответ

Решение

Хотя это, вероятно, приведет к высокому использованию ресурсов сервера и не очень рекомендуется, вы можете действовать следующим образом.

  1. Сервер, который будет захватывать файл с другого сервера - назовем его CLIENT.
  2. Сервер, который будет содержать новую информацию, которая будет скопирована КЛИЕНТОМ - назовем его SERVER.

На КЛИЕНТЕ создайте сценарий PHP, который использует CURL для загрузки только заголовков удаленного файла и, в частности, даты изменения.

Следующий ответ дает полезный фрагмент.

Сохраните эту дату и при следующем запуске сценария проверьте, обновлен ли он, затем загрузите полный исходный код, включая текст, и сохраните его по своему усмотрению (например, в локальный текстовый файл на КЛИЕНТЕ).

Снова на КЛИЕНТА, создайте cronjob, который будет запускаться каждую секунду или каждые 5 секунд или как часто вам нравится контент, который будет обновляться. Это может пригодиться для настройки cronjob.

Кроме того, вы можете создать один PHP-скрипт, который будет зацикливаться и что-то делать (загружать удаленный файл) и спать в течение 1 секунды, делая это в течение 60 секунд, а затем останавливаться. Добавьте к этому cronjob, который запускается каждую минуту, и вы получите тот же эффект, не вызывая cron на сервере CLIENT каждую секунду. Чтобы увидеть реализацию этого подхода, посмотрите этот вопрос и его принятый ответ.

Лучшей и рекомендуемой альтернативой является использование AJAX, который запускается на стороне клиента. Сделайте так, чтобы он запускался, как только мышь пользователя перемещается и извлекает дату из СЕРВЕРА через API, который вы можете выставить на стороне СЕРВЕРА (например, тот, который будет возвращать данные в формате JSON, для анализа библиотекой JavaScript, такой как jQuery, в браузере пользователя).). Стена Facebook закодирована таким образом. Если вы просто оставляете стену открытой на вкладке фона, она не загружает новый контент. Как только вы вернетесь к нему и наведите курсор мыши, появятся новые сообщения.

Другие вопросы по тегам