2014-10-26 97 views
4

我一直在尝试做随机cron作业,我选择年份日期和小时但分钟是随机的。创建特定日期和小时的随机分钟cron作业

我第一次尝试运行的cron每分钟,然后用今天的日期比较随机日期:

我在格式2014-10-26 17 rand(0,59)插入随机日期到数据库中列fake_time。在我每分钟运行cron的php页面中:

if($row["fake_time"] == date("Y-m-d H i")){ 
    //do stuff 
} 

而且这个工作很完美。但后来我发现我无法每分钟运行一次cron,因为我的hostor(hostgator)不允许我!你有什么想法可以以其他方式做到这一点吗?


或者我应该把它设置在https://www.easycron.com/而不是?

+1

这是给你很好的样本,检查:http://stackoverflow.com/questions/9049460/cron-jobs-and-random-times-在给定时间内 – 2014-10-26 21:11:00

+0

你的主机允许你做什么_does_?我认为@ M.Abooali评论中的解决方案应该工作得很好。 – andy 2014-11-10 19:02:02

+0

更大的问题是 - 你为什么要这样做?例如,WordPress已经有一个插件来检查网站的可用性,例如。 – Leptonator 2014-11-10 19:16:49

回答

1

,我认为你是被由cron作业的数量,你可以在一天内运行,IIRC限制hostgator对基本计划有每日限制。要解决此限制,IMO,你有两个选择:

  1. 转到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

  2. 设置easycron

    如果您的cron作业会突然终止,因为时间限制无法设置,您需要使用easycron服务命中。

    在这种情况下,将上面的脚本代码放在一个php文件中,比如说script.php,并安排一个cronjob用这个脚本的get请求命中。你在这种情况下,命令将类似于

    wget your.domain.com/script.php 
    
0

如果没有技术问题,你可以用你的php脚本来完成(不需要安装)。

if(rand(1, 5) == 1){ 
// do your staff 
} 

如果你认为该脚本将不被执行往往不够,你可以减少差异rand(1,3)

相关问题