PHP 使用 pcntl_fork()开启多进程后,如果有进程出现异常原因挂掉,有办法在不重启整个程序的情况下恢复进程么?

2018-11-12 16:35:48 +08:00
 echo404

如题,比如我开启了 8 个子进程去循环读取一个队列,然后因为某些异常导致有 4 个进程挂掉了,这样我读取队列的速度就慢了一半,可能导致队列积压。 所以有没有比较合适的方式来将进程恢复到 8 个,或者对这种业务场景有什么更好的解决方案么?

3214 次点击
所在节点    PHP
1 条回复
joyme
2018-11-12 17:02:46 +08:00
主进程需要对子进程的退出信号 SIGCHLD 做处理,这里可以使用 pcntl_signal。然后收到子进程退出信号后,重新开进程。

其实也可以不开多进程,使用 supervisor 启动 php 脚本,用 supervisor 来帮你重启。这样最简单了

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

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

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

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

© 2021 V2EX