我很确定我曾经在PHP脚本中看到过这个,虽然我找不到脚本。有些脚本会自动检查该脚本的更新,然后在有更新时自行替换。
我实际上并不需要所有这些,我只是希望能够让我的PHP脚本每30分钟自动运行一小时,但我想在没有cronjobs的情况下运行它,如果可能的话。
有什么建议吗?或者甚至可能吗?
编辑:在阅读了RC链接到的可能重复的之后,我想澄清一下。
我想在不使用PHP脚本之外的资源的情况下完全执行此操作。 AKA没有发送GET请求的外部cronjobs。我也喜欢这样做而不保持脚本不断运行并睡眠30分钟
答案 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 中的