1

我已经设置了一个 cronjob,它每 35 分钟执行一次 php 脚本。问题是我只希望它在第二天上午 11 点到凌晨 2 点运行。我希望这是自动的,而不必手动将 # 添加到 crontab 中。

我试过把这样的东西放在 php 脚本的顶部:

$time = date(H);

if ($time < 23 & $time > 11)
{
   echo 'Working';
}
else
{
   echo 'Stopped';
} 

但正如你所看到的,这只适用于同一天。

注意服务器正在使用另一个时区,与我的时区相差 +4 小时。

这意味着:当地时间上午 11 点是服务器时间下午 3 点,当地时间第二天凌晨 3 点表示第二天服务器时间上午 7 点。

4

4 回答 4

1

所以你想让你的 cronjob 在一天中的特定时间运行?你有没有尝试过:

35 11-23,0-2 * * * php /path/to/your/script.php

这将在上午 11 点(第 1 天)和凌晨 2 点(第 2 天)之间的每小时 35 分钟执行 - 一切都在服务器时间。

于 2013-02-16T20:07:18.667 回答
0

您需要H用引号括起来:

$time = date("H");

另一种将其视为常量的方式,并且由于您没有这样的常量,因此date()接收空参数

PS hohner 为您提供更好的解决方案

于 2013-02-16T20:08:05.537 回答
0

在检查之前将时间转移到正确的时区。

于 2013-02-16T20:12:17.260 回答
0

让我们使用您的代码并应用一些算术,只需减去 2 小时,您将得到 9 到 23 而不是 11 到 23 + 0 到 2。

$time = date(H)  - 2 ;

if ($time < 23 & $time > 9 )
{
   echo 'Working';
}
else
{
   echo 'Stopped';
} 

尝试!

我猜你的时区是 GMT-4,所以你的时区的上午 11 点到凌晨 2 点将是服务器上的上午 15 点到早上 6 点;另一个可能的设置是您正在谈论服务器时间,这意味着您设置的上午 11 点到凌晨 2 点是上午 7 点到晚上 10 点。

这意味着您可能必须调整代码以减去 6 小时而不是 2 小时。

于 2013-02-16T20:16:29.633 回答