关于开启 PHP 多进程与它们之间的通信问题

2015-05-13 09:53:05 +08:00
 lvfujun
关于开启PHP多进程与它们之间的通信问题
我们通常在Socket通讯的时候需要维护一个心跳包,有时候需要先有一个PHP父进程,然后开启一个PHP子进程来做这件事情..


如果这时候当其中一个子进程结束或出现问题时通知父进程,父进程就可以做一些事,如关闭其它正在运行的进程等等吧....

想了解一下大家在此类问题上是怎么实现或处理的?
2694 次点击
所在节点    PHP
7 条回复
crabRunning
2015-05-13 10:31:05 +08:00
swoole
dowern
2015-05-13 10:59:15 +08:00
pthreads 多线程速度杠杠的
GuangXiN
2015-05-13 17:16:40 +08:00
首先,如果你是想做daemon开发的话,优先考虑swoole,有了它PHP才是世界上最好的语言;
其次,PHP包装了一堆库完成IPC的C语言库,包括pcntl、socket、信号量、系统消息、共享内存等等,Unix上C语言能做的基本PHP都有;
再次,可以使用第三方工具完成IPC,比如memcache、数据库、各种MQ;
最后,不建议用pthread库,一大堆PHP扩展没有做线程安全处理,尤其是第三方维护的扩展,除非你编译的时候打开zts,而且只用PHP core函数库,否则肯定debug到死。
lvfujun
2015-05-13 17:25:13 +08:00
@crabRunning
@dowern
@GuangXiN
感谢各位,我已经用最简单的办法解决了这个难题.
Actrace
2015-05-13 22:26:49 +08:00
@GuangXiN 没有开zts似乎是不能应用pthread的。
hourui
2015-05-14 00:16:19 +08:00
即便开了 zts, 许多三方扩展依然有问题,我已踩坑无数。
lvfujun
2015-05-14 11:56:24 +08:00
@hourui 你们的需求是做出什么功能啊?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/190667

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX