免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: amazergling
打印 上一主题 下一主题

来个高难度的罕见问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-08-17 15:54 |只看该作者
关注

论坛徽章:
0
12 [报告]
发表于 2010-11-30 14:27 |只看该作者
这个问题看来无人解答么。。。

论坛徽章:
0
13 [报告]
发表于 2010-12-01 09:22 |只看该作者
shell 运行php 是不是应该再后台运行 用deamon

论坛徽章:
0
14 [报告]
发表于 2010-12-01 11:56 |只看该作者
exec的时候用&和不用&都试过,但都不行的

论坛徽章:
0
15 [报告]
发表于 2010-12-01 17:42 |只看该作者
你这个运行逻辑本身没有任何问题的,在PHP里exec('php -f ...'); 系统会另外开出一支进程来运行,跟你原先的PHP脚本所处进程完全没关系。

至于你说的会卡住,很可能是你的 c.php 和 a.php 的代码有共同需要排它锁的临界资源,导致死锁。检查一下 a.php和c.php 自身的代码吧!!

此外在 exec('') 里你最好指定完整的php可执行文件的路径,实在不行你还可以ps查看一下 c.php有没有被启动起来,如果有还可以用 linux 的 strace 工具分别追踪一下这几个进程当前昝在什么系统调用中。。。

论坛徽章:
0
16 [报告]
发表于 2010-12-01 19:47 |只看该作者
应该是没有文件锁的,c.php读写的资源和a.php和b.sh没有任何关系,大家各司其职,之间仅仅传递一些变量。

甚至写个最简但的sample hello world都不能跑起来,而且这时候整个php已经停止对外提供服务了。。。。。

论坛徽章:
0
17 [报告]
发表于 2010-12-02 00:12 |只看该作者
应该是没有文件锁的,c.php读写的资源和a.php和b.sh没有任何关系,大家各司其职,之间仅仅传递一些变量。
...
amazergling 发表于 2010-12-01 19:47



其实我经常这样搞啊,完全没有问题。从你的描述看是所有的PHP脚本都被阻塞也就是死锁了(这个锁不一定是发生在你的PHP代码里了),什么操作系统什么WEB服务器,什么方式运行的php~

强烈建议在LINUX用 strace -p XXX 看看这个进程到底在做什么事。

还有你再试一下把 exec() 改成用 popen 来调用看看?

论坛徽章:
0
18 [报告]
发表于 2010-12-02 11:16 |只看该作者
好,我试试看去,非常感谢!

论坛徽章:
0
19 [报告]
发表于 2010-12-03 20:52 |只看该作者
php cgi调用php脚本不会有问题。挂起应该是你自己代码的问题。

论坛徽章:
0
20 [报告]
发表于 2010-12-06 11:49 |只看该作者
换不同的web server试试在未启用ZTS的情况下是否有这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP