PHP 实现守护进程
14 评论112次阅读2009.12.04 0:06 作者:Felicia 编辑
[阅读更多]
void set_time_limit(int seconds); //配置页面最长执行时间
void ignore_user_abort(bool setting); //设置是否忽略用户终止操作
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);
}
很早以前就有用PHP实现守护进程的想法,无奈实验了很多次(包括跟Felix一起做的实验),结果都是关掉浏览器,PHP脚本就停止运行了。
今天无意中找到两个函数,想着或许对实现守护进程有帮助,他们是:
void set_time_limit(int seconds); //配置页面最长执行时间
void ignore_user_abort(bool setting); //设置是否忽略用户终止操作
我的设想是,把页面最长执行时间设置成0,相当于页面脚本可以无限时运行,并且设置忽略用户终止操作。
测试代码如下
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分钟,晕,实验还是失败了。
