amazergling 发表于 2010-08-02 15:59

来个高难度的罕见问题

用户调用了a.php,a.php接受用户数据后,exec了一个脚本,姑且称之为b.sh;

如果b.sh里全是shell命令,那么一切顺利。

但如果b.sh里有一个类似于php -f c.php的命令,那么执行到这一步,b.sh脚本就僵死了,a.php也长时间不返回。


最后只有手工kill掉php和bash进程。。。


哪位高人能解释清楚其中的奥妙?


个人感觉有可能是php threadsafe造成的

amazergling 发表于 2010-08-03 11:00

本帖最后由 amazergling 于 2010-08-03 11:09 编辑

刚才看了下,thread safe是diabled的

并且是以cgi形式跑的

renxiao2003 发表于 2010-08-03 12:21

那就是PHP再调PHP就出现线程问题了?

a.a 发表于 2010-08-03 13:29

为什么不直接调用c.php非得要shell script的方式调用呢?

amazergling 发表于 2010-08-03 14:29

那就是PHP再调PHP就出现线程问题了?
renxiao2003 发表于 2010-08-03 12:21 http://bbs.chinaunix.net/images/common/back.gif


    我也怀疑是类似的问题


为什么不直接调用c.php非得要shell script的方式调用呢?
a.a 发表于 2010-08-03 13:29 http://bbs.chinaunix.net/images/common/back.gif

    a.php是前台ui啦,c.php负责处理一些后台善后工作:emn23:

amazergling 发表于 2010-08-03 14:31

另外也试过把b.sh里的php执行方式改为shell方式,也就是在c.php里指定
!#/usr/local/bin/php

使得c.php可以不用php-f,而直接以bin的形式执行,但也会僵死。:cry:

a.a 发表于 2010-08-03 15:48

就像你说的有一个前台后台,你把所有的数据提交给c.php它就在后台执行了吗?a.php 该怎么运行还怎么运。

amazergling 发表于 2010-08-12 18:35

就像你说的有一个前台后台,你把所有的数据提交给c.php它就在后台执行了吗?a.php 该怎么运行还怎么运。
a.a 发表于 2010-08-03 15:48 http://bbs.chinaunix.net/images/common/back.gif


    可问题就在于所有的php都停止服务,即便页面新开窗口运行php都失败,除非手工杀死php和bash进程

xinglu1983 发表于 2010-08-13 09:30

以前遇到过这种问题,也是php和shell结合的时候,出现这种莫名的死进程,也是找不到问题原因,当时我记得好像是需要先调用一个php文件,检测数据库链接情况,然后调用shell去重启一个服务器进程,就会出现这种问题。
后来改成系统定时执行一个shell,shell里去调php检测数据库,然后重启,就没出过问题。。。。。。原因还是没找到。

amazergling 发表于 2010-08-17 10:48

发现凡是有 父进程(php)发起的shell,再去调用php脚本时,也就是c.php和a.php持有相同的session,但问题在于,c.php一旦被吊起,会把a.php的session清空,问题越来越奥妙了。。。。:outu:
页: [1] 2 3
查看完整版本: 来个高难度的罕见问题