Запускать cronjob все время, кроме 30 часов подряд в неделю

#php #cron

#php #cron

Вопрос:

С 16:00 по восточному времени в пятницу до 10:00 субботы по восточному времени электронные письма с использованием cronjob отправляться не должны. Как я могу настроить свой cronjob для этого?

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

1. Каков ваш текущий график cronjob?

2. Почему бы не позволить вызываемому скрипту справляться с подобными вещами?

3. @Pekka — Я просто подумал о том же самом…

4. Я устанавливаю файл cronjob, который выполняется весь день каждые 1 час. Клиент хочет останавливать отправку почты только в определенные дни.

5. @lifeline тем не менее — почему бы не обработать это в скрипте? Я не думаю, что синтаксис crontab достаточно гибкий для этого.

Ответ №1:

Если у вас есть доступ к PHP-файлу, вы могли бы добавить это в начало:

Редактировать

Обратите внимание, я использовал неправильный 24-часовой символ часов, он должен быть H . Смотрите этот codepad.

 <?php

$wH = date('wH');

if (($wH > 516 amp;amp; $wH < 525) || ($wH > 600 amp;amp; $wH < 622)) {
    exit('Script exited.');
}

echo 'Script ran.';

?>
  

http://codepad.org/uKzlJjzs

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

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

1. @lifeline — Смотрите мою правку, у меня был неправильный символ 24-часовых часов.

2. Да, это работает. Сегодня суббота. Он перестал выполняться. Пожалуйста, подтвердите, что это будет остановлено до 10 вечера субботы?