Чтобы использовать sleep () или cron - PullRequest
2 голосов
/ 25 июня 2009

У меня есть этот почтовый скрипт, который я должен запустить несколько раз. Для запуска скрипта я буду использовать cron, но скрипт должен запускаться еще 2 или 3 раза (с интервалом в один час).

Какой лучший способ сделать это? Чтобы использовать команду sleep в течение часа или в конце сценария, поместить некоторый код, чтобы сценарий создал новое задание cron для самостоятельного запуска через час?

Спасибо

Ответы [ 4 ]

7 голосов
/ 25 июня 2009

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

0 0-2 * * * /usr/local/bin/mail-script.php

Вы можете выбрать несколько часов, используя синтаксис - или синтаксис запятой:

0 0,1,2,3 * * * /usr/local/bin/mail-script.php

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

Do:

> man 5 crontab

Чтобы узнать, обрабатывает ли * nix вышеупомянутые случаи.

Наконец, если вы не знаете, что скрипт должен запускаться только 2-3 раза, вам лучше поставить логику о том, «запускать или не запускать» в самом скрипте PHP, и затем просто запускайте его каждый час.

2 голосов
/ 25 июня 2009

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

Альтернативой sleep () может быть использование SIGALRM (поэтому ваш скрипт перехватывает прерывание и выполняет код через определенный интервал времени - когда выбрасывается это прерывание.)

Я имею в виду, я бы порекомендовал использовать cron - но есть несколько альтернатив!

0 голосов
/ 25 июня 2009

Почему бы просто не установить критерий cron, чтобы он срабатывал в это конкретное время? Крон довольно гибок в этом аспекте.

Обновите ваш вопрос, когда вы хотите, чтобы он сработал, и я могу привести пример.

0 голосов
/ 25 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...