С этой проблемой я сталкиваюсь в скрипте PHP, который вызывается cron каждые полчаса:
$dt = new DateTime();
$dt->modify("+2 hours");
if ($dt > new DateTime("01:00:00") && $dt < new DateTime("2:00:00")) {
include_once("../p-auto.php");
$fipw = fopen('../logs/cron_f.txt', 'a');
fwrite($fipw, "p-auto cron: ".date("F j, Y, g:i a").PHP_EOL);
fclose($fipw);
}else{
$fipw = fopen('../logs/cron_f.txt', 'a');
fwrite($fipw, "NOT p-auto: ".date("F j, Y, g:i a").PHP_EOL);
fclose($fipw);
}
журнал, который я видел на сервере, выглядит так:
NOT p-auto: April 20, 2020, 11:07 pm
NOT p-auto: April 20, 2020, 11:39 pm
NOT p-auto: April 21, 2020, 12:07 am
NOT p-auto: April 21, 2020, 12:36 am
NOT p-auto: April 21, 2020, 1:06 am
NOT p-auto: April 21, 2020, 1:36 am
NOT p-auto: April 21, 2020, 2:08 am
NOT p-auto: April 21, 2020, 2:36 am
NOT p-auto: April 21, 2020, 3:06 am
NOT p-auto: April 21, 2020, 3:36 am
NOT p-auto: April 21, 2020, 4:08 am
Проблема, кажется, началась после того, как я добавил $dt-modify
, что я подозреваю, что, поскольку я изменяю dateTime между изменениями даты, это приводит к некоторой ошибке в тесте if.
Теперь я не могу изменить настройки сервера (он не принадлежит мне, и я не могу запрашивать какие-либо настройки), а часовой пояс сервера настроен на 2 часа меньше реального местного времени. Я могу изменять только свои PHP сценарии, поэтому я немного ограничен в том, чего я могу достичь.
Пожалуйста, если у кого-то есть какое-то предложение, я столкнулся с этой проблемой уже неделю… .