分类
后端 服务器

LaravelS 基于 Swoole Process 模块 — 进程间通信

Swoole 的 Process 模块可以很好的支持进程间通信,在基于 Process 模块实现的 PHP 多进程应用中,可以通过管道通信(Unix Socket)和消息队列通信两种方式实现进程间通信。

管道通信

同步通信

在 Swoole Process 模块中通过管道进行进程间通信很简单,只需要通过 read/write 从管道读取数据就好了,下面我们编写一个简单的示例代码,从主进程传递命令 php --version 到子进程,子进程执行之后,将结果返回给主进程打印出来

无论是从主进程发送数据到子进程,还是从子进程发送数据到主进程都是 OK 的

在通过管道进行进程间通信时,需要注意,数据只能单向流动,即通过管道发送的数据只能由另一个进程读取,自己不能读取

管道通信默认为同步阻塞模式,如果要实现异步通信,需要借助 swoole_event_add 函数将管道加入事件循环

异步通信

这样一来,其它子进程逻辑就不会同步阻塞于 $process->read(),可以立即执行了。

消息队列


REFERENCE

发表评论

电子邮件地址不会被公开。 必填项已用*标注