我已经设置了一个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点服务器。
答案 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小时。