旗下导航:搜·么
当前位置:网站首页 > PHP框架 > Swoole > 正文

swoole历程间怎样通讯【swoole】,swoole

作者:搜搜PHP网发布时间:2019-12-03分类:Swoole浏览:107


导读:Swoole历程间通讯的体式格局管道pipe管道用于历程之间的数据交互,Linux体系自身供应了pipe函数用于建立一个半双工通讯管道。半双工的通讯体式格局中数据只...

Swoole历程间通讯的体式格局

管道pipe

管道用于历程之间的数据交互,Linux体系自身供应了pipe函数用于建立一个半双工通讯管道。半双工的通讯体式格局中数据只能单向活动(一端只读一端只写),只能在具有亲缘关联(父子历程)的历程之间运用。 (引荐进修: swoole视频教程)

管道是历程间通讯IPC中最基本的体式格局,管道有两种范例分别是定名管道、匿名管道。

匿名管道:特地用于具有血缘关联的历程之间,完成数据通报。定名管道:能够用在任何两个历程之间,Swoole中的管道都是匿名管道。

在Swoole中应用eventfd和UnixSock封装了两种管道,使得历程之间的通讯越发天真。

Swoole的Process模块内置了管道的体式格局用于历程间通讯,在构建Process实例时只需开启了$pipe_type选项,Swoole底层会自动建立一个管道,这里须要申明的时,虽然名字上叫做管道,但实际上在新版Swoole中底层通讯是经由过程UnixSock完成的,所以并非真正意义上的Linux Pipe。

建立历程

swoole_process::__construct(
callable $function, 
bool $redirect_stdin_stdout = false, 
int $pipe_type = SOCK_DGRAM, 
bool $enable_coroutine = false
);

管道范例$pipe_type可分为三种:

0示意不建立管道

1示意建立SOCK_STREAM范例的管道

2示意建立SOCK_DGRAM范例的管道

当启用$redirect_stdin_stdout后,$pipe_type选项将疏忽用户参数,强制为1。

管道描述符

当历程被fork出来后,父历程和子历程中的Process对象会被设置上一个名为pipe的成员变量,存放着底层UnixSocket的描述符,父历程和子历程能够经由过程这个管道描述符来发送数据,也能够直接挪用Process供应的read/write接口来收发数据。

object(Swoole\Process)#1 (6) {
  ["pipe"]=>int(4)
  ["callback"]=>NULL
  ["msgQueueId"]=>NULL
  ["msgQueueKey"]=>NULL
  ["pid"]=>int(287)
  ["id"]=>NULL}

管道读写

swoole_process->write(string $data) 向历程的管道中写入数据

swoole_process->read(int $buffer_size = 8192) 从历程的管道中读取数据

以上就是swoole历程间怎样通讯的细致内容,更多请关注ki4网别的相干文章!

标签:swoole