cronjob. запускать php только в заданный промежуток времени

Я установил 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.