/ ignore_user_abort

PHP实现计划任务

网络上有很多关于PHP实现计划任务的文章,里面都提到了ignore_user_abort()和set_time_limit()这两个函数。

然后给出一个DEMO:

ignore_user_abort(); set_time_limit(0); $interval=5; while(true) { file_put_contents('1.txt',time(),FILE_APPEND); sleep($interval); }

在浏览器中访问一下这个页面,确实按照我们的要求每5秒记录一次时间。

但是却发现了一个问题,那就是用户的浏览器一直处于加载状态,也就是等待服务器返回数据,事实上这是一个无止境的等待。

虽然不影响到计划任务的执行,但是对于有强迫症的我来说,看到浏览器一直处在加载状态就很不爽。

所以今晚(确切的说是今天凌晨)就决心搞定这个问题。

经过各种查资料、想办法,终于搞定了这个代码……

主要思路是:通过设置http头来告诉浏览器,我已经输出完毕,不需要再等待服务器输出了。

代码如下:

ignore_user_abort(); set_time_limit(0); $interval=5; header("Content-Length: 1"); echo " "; while(true) { file_put_contents('1.txt',time(),FILE_APPEND); sleep($interval); }

经过测试,在IE和Chrome下访问都没有出现加载状态,而且确实在执行计划任务。

PHP实现计划任务
Share this