Я установил cronjob, который запускает php-скрипт каждые 35 минут. Проблема в том, что я только хочу, чтобы он работал с 11:00 до 2:00 следующего дня. Я хочу, чтобы это было автоматически без необходимости добавлять # вручную в crontab.
Я попытался поставить что-то вроде этого в верхней части php-скрипта:
$time = date(H); if ($time < 23 & $time > 11) { echo 'Working'; } else { echo 'Stopped'; }
Но, как вы видите, это работает только в тот же день.
ПРИМЕЧАНИЕ . Сервер использует другой часовой пояс, который имеет +4 часа разницы с моим.
Это означает: 11:00 по местному времени – 3 часа времени сервера и 3 часа дня на следующий день – местный означает 7 AM на следующий день.
Итак, вы хотите, чтобы ваш cronjob работал между определенными часами дня? Ты пробовал:
35 11-23,0-2 * * * php /path/to/your/script.php
Это будет выполняться через 35 минут каждый час между 11:00 (день 1) и 2:00 (день 2) – все время сервера.
Вы должны заключить H
с кавычками:
$time = date("H");
Другой способ – считать константой, и поскольку у вас нет такой константы, date()
принимает пустой аргумент
PS hohner предоставил вам лучшее решение
перед проверкой сдвиньте время до правильного часового пояса.
Давайте возьмем ваш код и применим некоторую арифметику, просто заменим 2 часа, и у вас будет от 9 до 23 вместо 11 до 23 + от 0 до 2.
$time = date(H) - 2 ; if ($time < 23 & $time > 9 ) { echo 'Working'; } else { echo 'Stopped'; }
Пытаться!
Я предполагаю, что ваш часовой пояс GMT-4, поэтому с 11:00 до 2:00 по вашему часовому поясу будет 15:00 – 6:00 на сервере; другая возможная настройка – вы говорите о времени сервера, что означает, что с 11:00 до 2:00 с 7:00 до 22:00 по вашей настройке.
Это означает, что вы можете настроить код, чтобы выставить 6 часов вместо 2.