的cronjob。仅在指定的时间间隔内运行php

时间:2013-02-16 20:02:45

标签: php cron crontab

我已经设置了一个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 个答案:

答案 0 :(得分:1)

所以你想让你的cronjob在一天中的某些时段之间运行?你试过了吗?

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

这将在上午11点(第1天)和凌晨2点(第2天)之间每小时过去35分钟执行 - 所有内容都在服务器时间内。

答案 1 :(得分:0)

您需要将H括在引号中:

$time = date("H");

它被视为常量的另一种方式,并且,由于你没有这样的常量,date()接收空参数

P.S。 hohner为您提供了更好的解决方案

答案 2 :(得分:0)

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

答案 3 :(得分:0)

让我们拿你的代码并应用一些算法,只需减去2小时就可以得到9到23而不是11到23 + 0到2。

$time = date(H)  - 2 ;

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

尝试!

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

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