我一直在尝试做随机cron工作,我选择年份日期和小时,但分钟是随机的。
我的第一次尝试是每分钟运行一次cron,然后将一个随机日期与今天的日期进行比较:
我以fake_time
格式将随机日期插入数据库列2014-10-26 17 rand(0,59)
。在我每分钟运行cron的php页面中:
if($row["fake_time"] == date("Y-m-d H i")){
//do stuff
}
这完美无缺。但后来我发现我无法每分钟运行cron因为我的主持人(hostgator)不允许我这样做!您是否有任何关于如何以其他方式做到这一点的想法?
或者我应该在https://www.easycron.com/上进行设置呢?
答案 0 :(得分:1)
我认为你受到一天中可以运行的cron工作数量的限制,IIRC主持人对基本计划有每日限制。要解决此限制,IMO,您有两种选择:
转到sleep
60秒
基本上,每天在规定的时间运行cron作业,并检查你的情况,如果不是True
,那么进入睡眠状态60秒。
if($row["fake_time"] == date("Y-m-d H i")){
//do stuff
} else {
sleep(60);
}
这样,你有一个单独的cron作业,虽然它运行了很长时间。如果您每天只能运行cron作业,并且您希望以随机小时和分钟运行,您可以更改逻辑并进入睡眠状态3600
秒进行每小时睡眠,然后进行微小睡眠60秒。
您可能需要相应地设置set_time_limit
。
设置easycron
如果由于无法设置时间限制而突然终止您的cron作业,则需要使用easycron
服务。
在这种情况下,将上面的脚本代码放在一个php文件中,比如script.php
,然后安排一个cronjob来点击这个脚本的get请求。在这种情况下,您的命令看起来像
wget your.domain.com/script.php
答案 1 :(得分:0)
如果没有技术问题,可以使用php脚本(无需安装)。
if(rand(1, 5) == 1){
// do your staff
}
如果您认为脚本不会经常执行,则可以减少差异rand(1,3)