Как работают php-демоны?

#php #curl

Вопрос:

Я изучаю php и хотел бы написать простой монитор форума, но я столкнулся с проблемой. Как написать скрипт, который регулярно загружает файл? Когда страница загружается, php выполняется только один раз, и если я помещу его в цикл, все это нужно будет запустить до завершения загрузки страницы. Но я хочу, скажем, загружать файл каждую минуту и делать уведомление на странице, когда файл изменяется. Как мне это сделать?

Комментарии:

1. Вы, вероятно, ищете приятелей 😉

2. @nikic Согласился. Я бы написал деймонов только в том случае, если время между выполнением должно быть меньше одной минуты. По моему опыту, это очень редко, и cron может легко с этим справиться.

Ответ №1:

Как правило, вы будете действовать в два этапа :

  • Во-первых, у вас будет PHP-скрипт, который будет запускаться каждую минуту-с помощью crontab
    • Этот скрипт выполнит тяжелую работу : загрузит и проанализирует страницу
    • И хранение некоторой информации в общем расположении-обычно это база данных
  • Затем вашим веб-страницам нужно будет только проверить это общее местоположение (базу данных), если информация там есть.

Таким образом, ваши веб-страницы всегда будут работать :

  • Даже если пользователей много, только cronjob загрузит страницу
  • И даже если cronjob какое-то время не будет работать, веб-страница будет работать ; худшее, что может случиться, — это устаревшая информация.

Комментарии:

1. Подождите, так я могу даже использовать старый добрый perl для извлечения и обработки?

2. Ну, а почему бы и нет ? 😉 Вам просто нужно найти способ хранить информацию на одной стороне (Perl) и читать ее на другой стороне (PHP) ; база данных, файлы … есть несколько решений, которые вы можете использовать 🙂

Ответ №2:

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

Однако я просто хотел напрямую ответить на ваш вопрос, а именно: как работает демон в PHP? Ответ заключается в том, что он работает так же, как демон на любом другом языке — вы запускаете процесс, который не заканчивается сразу, и помещаете его в фоновый режим. Затем этот процесс опрашивает файлы или принимает подключения к сокетам или что-то в этом роде, и при этом выполняет некоторую работу.

(Это, очевидно, несколько упрощенный обзор, и, конечно, вам, как правило, понадобятся механизмы для управления процессами, для того, чтобы служба плавно завершила работу, и, возможно, интеграция в управление демонами операционной системы и т. Д. Но основы в значительной степени одинаковы.)

Ответ №3:

Как написать скрипт, который регулярно загружает файл?

для этого есть обучающие программы, такие как «cron» в linux (или unix)

Когда страница загружается, php выполняется только один раз,

всего один раз, точно так же, как index.php вашего сайта….

Если вы хотите обновить страницу, которая отображается в браузере, вам следует использовать какую-либо форму AJAX, если вам нужно что-то другое, кроме того, что ваш вопрос мне не ясен……