2009-07-22 40 views
1

说我想要一个php脚本运行函数itstime()每小时。除了在服务器上设置cron作业,我该怎么做?基于时间的php脚本

或者这是不可能的,因为PHP脚本需要打开才能运行?

谢谢。

编辑:我想写一些信息到一个日志文件,并根据一些变量发送它在一封电子邮件。

回答

1

那么,我绝对推荐为此目的的cron工作。但理论上,您可以运行一个PHP脚本,运行itstime(),休眠一个小时,然后循环。虽然这很疯狂。

该脚本看起来像:

<?php 
include('whatever.php'); 
while(true) { 
    itstime(); 
    sleep(3600); 
} 
?> 

一个可能会与nohup php mycrazyscript.php &运行它从你的终端分离并使其继续运行,并使用pkill -f mycrazyscript终止它。

这是疯狂的原因是,现在你已经有一个睡眠PHP进程挂在每小时59分钟无所事事,你必须确保它在正确的时间运行和运行,哪个cron会照顾你的。

+0

我该怎么做?为什么你说它疯了? – lanrat 2009-07-22 02:49:17

+0

是肯定不是我选择的方法,但如果cron不是一种选择,可能是唯一的选择。 – Christian 2009-07-22 02:49:38

+0

如果我使用这种方法意味着当我访问这个页面(要启动脚本)它将永远不会完成加载? 如果是这种情况,脚本会在页面退出后停止运行? – lanrat 2009-07-22 02:56:28

1

只追加混乱的答案,所以给他信用。

mrlanrat - 见this

1

如果您没有访问cron的,但有机会获得适度繁忙的Web服务器,你可以用它来触发每隔一小时你的函数。这就是WordPress需要cron的方式。这里是你将如何做到这一点:

<?php 
$lastrun = get_last_run_time(); // get value from database or filesystem 
if(time()-$lastrun > 60*60) { 
    itstime(); 
    set_last_run_time(time()); // write value back to database or filesystem 
} 
// The rest of your page 
?> 

当然,有一个非常严重的竞争状态在这个代码是。解决这个问题留给读者。