php多进程间通信的问题

本人PHP菜鸟一枚,最近想写一个简单地http服务器demo,想借鉴swoole的模式。

目前是这样的想法,创建三种类型的进程,master进程、worker进程和manage进程。master进程负责接收socket请求,并选择一个worker进程,让它进行处理。manage进程负责维护worker进程,如果发现有worker进程挂了,则重新拉起一个进程。worker进程负责具体逻辑。

现在的问题是我不知道该怎么存放worker进程,让master进程和manage进程同时都能对worker进程进行操作。比如manage进程重新拉起一个进程后,master进程也需要知道。这应该是拿什么存储呢?

我原本想的是用swoole的table存储,但是需要存储的是process进程对象,而table只能存储int,float,string三种数据类型。

希望各位大佬们对我的疑问可以指点一二,本人不胜感激!

阅读 2.5k
3 个回答

可以从php-fpm管理上来处理。

master 进程 用来做子进程管理,子进程处理web 请求。

在master 启动的时候,先开启端口监听。然后fork 子进程。

父进程拿到子进程的pid,然后子进程继承父进程的端口fd。这样就可以做管理了。


多谢关注我的公众号:搬砖程序员带你飞

谢谢!

启动一个 redis 服务

master 向 redis lpush 任务

worker 从 redis rpop 任务

worker 多开都可以

建议参考 workerman。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题