如何判断一个PHP脚本是否在运行?
问题如题,由于项目需要,有一个永久运行的PHP脚本,示例代码如下:
ignore_user_abort(); // 无视用户断开
set_time_limit(0); // 无执行时间限制
while (true)
{
echo 'test'; // 这里仅为说明使用,实际是业务逻辑处理代码
sleep(2);
}
如果是第一次启动运行该脚本当然没有什么问题,问题是运行之后,如果操作人员再次点击启动该脚本,期望的效果是先进行一下判断该脚本是否已经在运行(不然很浪费处理资源),不知能有什么方法可以达到我说的这种目的呢?我试过文件锁定,即在上面的代码中加入锁定本页面命令,期望apache再次执行该脚本时发现已经被它之前运行的脚本锁定,就不再执行该脚本了,可结果不行,不知是不是因为apache的执行脚本级别与脚本运行级别不是同一级别?另外说下我的配置环境,Windows XP + Apache 2.2.11 + PHP 5.2.10,我知道像Unix环境下有grep命令判断一个进程是否在运行,不过我这里并不是一个单独的进程(比如apache的进程为httpd.exe),而只是一个PHP脚本,我不知道能用什么方法来判断了?!