是否有可能在不使用cronjob的情况下每小时左右运行一个PHP脚本?

时间:2010-05-16 07:19:07

标签: php cron

我很确定我曾经在PHP脚本中看到过这个,虽然我找不到脚本。有些脚本会自动检查该脚本的更新,然后在有更新时自行替换。

我实际上并不需要所有这些,我只是希望能够让我的PHP脚本每30分钟自动运行一小时,但我想在没有cronjobs的情况下运行它,如果可能的话。

有什么建议吗?或者甚至可能吗?

编辑:在阅读了RC链接到的可能重复的之后,我想澄清一下。

我想在不使用PHP脚本之外的资源的情况下完全执行此操作。 AKA没有发送GET请求的外部cronjobs。我也喜欢这样做而不保持脚本不断运行并睡眠30分钟

7 个答案:

答案 0 :(得分:3)

您可能希望在指定时间内使用PHP的sleep函数以此间隔运行代码,或者如果,您可能需要尝试一些 online cron job services 愿望

答案 1 :(得分:3)

如果你获得足够的命中,这将有效...

在某处存储上次更新时间(文件,数据库等)。在获得足够命中的文件中添加一个代码,用于检查上次更新时间是否超过xx分钟前。如果是,则运行脚本。

答案 2 :(得分:1)

您可以使用来自真实访问者的AJAX调用来在后台运行预定作业(google为“穷人的cron”,还有许多实现)或使用一些外部类似cron的服务(例如cronjob在其他一些机器上)。从理论上讲,你可以运行一个没有超时的PHP脚本并使其永久循环并在适当的时间触发请求,但唯一能实现的是以非常无效和脆弱的方式重新发明cron(如果脚本为某些人而死)原因,它永远不会再自己开始,而cron只会再次调用它。)

答案 3 :(得分:0)

在不保持脚本不断运行的情况下,你要么必须使用一些不能保证实际运行的hackish(使用常规用户页面访问来运行一个例程来查看自上次运行以来X时间是否已经过去了脚本,如果是,请再次运行),或使用cron之类的外部服务。普通的PHP脚本无法神奇地调用自己。

答案 4 :(得分:0)

如果主机包含mysql 5.1+ db,那么可能有定时触发器来调用脚本?我喜欢这些任务不可能的类型问题,但需要更多关于什么样的游乐场和最佳答案规则的信息。

答案 5 :(得分:0)

无论哪种方式,您都需要设置正确的execution time,以便脚本不会超过它。

答案 6 :(得分:0)

我发现了这个:

<?php 
    // name of your file 
    $myFile="time.db"; 
    $time=file($myFile); 
    if(time()-3600 > $time[0]){ 
        // an hour has elapsed 
        // do your thing. 

    // write the new timestamp to file 
    $fh = fopen($myFile, 'w') or die("can't open file"); 
    fwrite($fh, time()); 
    fclose($fh); 
    } 

    else{ 
        // it hasn't been an hour yet, so do nothing 
    } 
?>
here

中的