Как обрабатывать удаленный канал каждую секунду в Linux или PHP

#php #cron #daemon #init

#php #cron #демон #инициализация

Вопрос:

Какой разумный способ опрашивать удаленный канал каждую секунду из окна Linux?

Мне нужно каждую секунду опрашивать удаленный канал по http, проверять наличие изменений; затем в ответ измените некоторые файлы, которые я буду обслуживать через Apache.

Разрешение Cron on составляет одну минуту, поэтому, чтобы использовать его, я мог бы запускать PHP-скрипт каждую минуту, а затем запускать скрипт в течение минуты, опрашивая канал каждую секунду. С этим возникают проблемы, поскольку PHP-скрипт может выполняться дольше минуты, и тогда у меня будет либо два запущенных скрипта, либо промежутки около минуты, когда скрипты не выполняются.

Другая идея, которую я рассматриваю, заключается в написании демона, который будет использовать curl для проверки канала на наличие различий, а затем запускать PHP-скрипт для обработки этих различий. Я никогда раньше не писал демона и понятия не имею, будет ли это излишеством для моей проблемы.

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

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

2. Если удаленный канал имеет малейшую задержку, то подключение к удаленному серверу, получение канала, проверка обновлений, потенциально обновление файлов на вашем сервере может занять больше секунды.

3. @Blinkydamo К сожалению, это должно происходить примерно каждую секунду, поскольку нам нужно предоставлять «живую» информацию. Для опроса канала и получения ответа требуется менее 200 мс, и обработка, которую я выполняю, легкая. Вместо того, чтобы опрашивать каждую секунду на втором, я был бы рад провести опрос через 1 секунду после завершения последних запросов.

4. Cron этого не сделает, поэтому ознакомьтесь с использованием ajax с setInterval() от jquery

5. @Blinkydamo Это можно сделать с помощью cron, но решения, которые я видел, кажутся взломанными. Кроме того, это в значительной степени проблема с сайтом сервера, поэтому я все равно не вижу, чтобы ajax или jquery могли быть частью решения.