У меня есть этот почтовый скрипт, который я должен запустить несколько раз. Чтобы запустить скрипт, я буду использовать cron, но сценарий должен запускаться 2 или 3 раза (с часом в отдельности).
Каков наилучший способ сделать это? Чтобы использовать команду sleep в течение часа или в конце скрипта, поместите некоторый код, чтобы сценарий создавал новое задание cron для запуска его через час?
благодаря
Если не будет экономии средств при сохранении сценария в памяти, вам лучше использовать cron, чтобы вызывать его каждый час, по мере необходимости.
0 0-2 * * * /usr/local/bin/mail-script.php
Вы можете выбрать несколько часов, используя синтаксис или синтаксис:
0 0,1,2,3 * * * /usr/local/bin/mail-script.php
Если ему нужно поддерживать некоторую форму состояния, используйте временный файл, чтобы сохранить сохраненное состояние.
Делать:
> man 5 crontab
Чтобы узнать, обрабатывает ли ваш * nix вышеуказанные случаи.
Наконец, если вы не знаете, что сценарий должен запускаться только 2-3 раза, вам лучше поставить логику о том, «запускать или не запускать» в самом скрипте PHP, а затем запускать его каждый час.
Одним из преимуществ использования sleep () является то, что он может быть более портативным. Например, во многих системах, с которыми я работаю, пользователям не разрешается иметь собственные задания cron, поэтому использование вашей программы для ухода за собственным таймером может быть преимуществом.
Альтернативой sleep () может быть использование SIGALRM (поэтому ваш скрипт ловит прерывание и выполняет код с определенным интервалом – когда это прерывание выбрасывается).
Я имею в виду, я бы рекомендовал использовать cron – но вот несколько альтернатив!
Я не уверен, что любой подход (спать в течение часа или создавать задания cron из php) идеален, как насчет задания cron, которое выполняется каждый час в любом случае, тогда ваш скрипт php проверяет, должен ли он работать?
Почему бы просто не установить критерии cron, чтобы он срабатывал в течение определенного времени? Cron довольно гибкий в этом аспекте.
Обновите свой вопрос, когда вы хотите его запустить, и я могу привести пример.