PHP 实现守护进程

14 评论112次阅读2009.12.04 0:06 作者:Felicia 编辑

[阅读更多]

很早以前就有用PHP实现守护进程的想法,无奈实验了很多次(包括跟Felix一起做的实验),结果都是关掉浏览器,PHP脚本就停止运行了。

今天无意中找到两个函数,想着或许对实现守护进程有帮助,他们是:

<?php
void set_time_limit(int seconds); //配置页面最长执行时间
void ignore_user_abort(bool setting); //设置是否忽略用户终止操作
?>

我的设想是,把页面最长执行时间设置成0,相当于页面脚本可以无限时运行,并且设置忽略用户终止操作。
测试代码如下

<?php
set_time_limit(0);
ignore_user_abort(true);
 
while (true) {
    
$fp = fopen('test.txt', 'a');
    
fwrite($fp, date("Y-m-d H:i:s")."\n");
    
fclose($fp);
    
sleep(1);
}
?>

在本机win7和meyu服务器(linux),都测试通过了,test.txt在用户关闭浏览器之后仍然不断增长。

到现在为止在服务器上脚本运行了14分钟(在浏览器关闭之后,用ftp查看test.txt),仍然在继续增长,说明测试进程仍然在执行。

至此,可以证明PHP能够实现守护进程了。
早上起来发现测试进程停止了……一共执行了20分钟,晕,实验还是失败了。

标签, | 日志分类:Php