nicejames 发表于 2012-11-25 12:18

请教各位php5.3的一个cli进程问题,谢谢

请教各位php5.3的一个cli进程问题,谢谢

情况是这样的,我们服务器上面有一些用php写的crontab定时运行的脚本,
脚本就是做一些数据库的逻辑处理运算,然后同时只能执行一个cli进程, 所以用了lock加锁,开始处判断加锁,类似下面
if(file_exists(xxx)){
    die("is exists");
}
file_put_contents("xxx","1");
然后程序结尾用register_shutdown执行删除lock文件

在php5.2情况下面运行得很好,但是最近一个星期 把环境升级到php5.3以后 发生了一件怪事,
就是比如 /tmp/1.php这个cli脚本他是一分钟执行一次 ,里面就是些数据库操作语句,然后开始运行很正常,就是正常的加锁(file_put_contents) 和解锁(unlink) 然后进程退出.

但是一般运行了24小时以后,就会慢慢出现那种lok文件删除了的(我想这里应该是代表程序执行完了),但是程序的进程还存在,
就是用Ps aux|grep "1.php" 终端下面偶尔会出现几个进程,一直不消失(这几个进程几天后仍然没有消失) ,请问各位这种怎么排查进程不退出的原因呢?谢谢

php5.2是一切正常,所以应该业务逻辑没得问题,
假如说遇到进程退出了,lock文件没有删除,那还好理解,肯定是进程突然崩溃了,没执行解锁,但是是lock文件删了,进程没退出,也不知道用什么工具可以查看此进程正在干什么,麻烦知道的朋友帮忙看看呢,谢谢。

maochanglu 发表于 2012-11-26 10:20

这个还真没碰到过。求高手解答。

linux_c_py_php 发表于 2012-11-26 22:54

你这不叫锁, 你了解一下flock文件锁吧.

nicejames 发表于 2012-11-27 10:53

linux_c_py_php 发表于 2012-11-26 22:54 static/image/common/back.gif
你这不叫锁, 你了解一下flock文件锁吧.

恩我懂你的意思,你是说给文件加锁对吧,但是这个问题貌似不是锁的问题,也许是我说法问题
不说锁,说一个标志位 应该可以
页: [1]
查看完整版本: 请教各位php5.3的一个cli进程问题,谢谢