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

多历程定名管通通讯【无血缘关系历程】PHP 版本【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:115


导读:历程通讯:1、中断体系2、无名管道【半双工通讯】只能用于父子历程,兄弟历程之间的通讯,且没有名字,称为无名管道,传输的数据是无花样的,双方可本身定义花样,不依赖于文...
历程通讯:

1、中断体系

2、无名管道【半双工通讯】

只能用于父子历程,兄弟历程之间的通讯,且没有名字,称为无名管道,传输的数据是无花样的,双方可本身定义花样,不依赖于文件体系。

引荐:《PHP教程》

3、定名管道

用于无名管道没法完成的骚操纵 ,没任何关系的历程也能举行通讯【就是依赖于一个文件描述符,只不过这文件是一个 FIFO 范例的文件即管道文件,恪守 FIFO 准绳,即行列先进先出】

PS:务必相识历程壅塞,非壅塞道理,管道文件,历程【运转状况转移】

运用场景举例说明: 如运用 php 的 socket API 编写一个相似 workerman 的收集框架,能够做一致中断信号事宜处置惩罚

中断处置惩罚顺序只担任接收中断请求,经由过程管道写端写入数据,主历程经由过程监听文件描述符上的事宜【可读事宜【能够私下去撸一下 stream socket 相干 API,以及相识下 IO 复用函数的运用方法】再处置惩罚。不会让中断处置惩罚顺序守候太长的时候。

固然经由过程定名管道也能够完成跨言语历程间的通讯。

$filePath = $argv[1];
if (posix_mkfifo($filePath,0666)<0){
    fprintf(STDOUT,"定名管道建立毛病");
    exit(0);
}
$fd = fopen($filePath,"w");
while (is_resource($fd)){
    fprintf(STDOUT,">");
    $data = fgets(STDIN);
    if ($data){
        fwrite($fd,$data,strlen($data));
    }
}
exit(0);
$filePath = $argv[1];
if (posix_mkfifo($filePath,0666)<0){
    fprintf(STDOUT,"定名管道建立毛病");
    exit(0);
}
$fd = fopen($filePath,"r");
while (is_resource($fd)){
    $data = fgets($fd);
    if ($data){
        fwrite(STDIN,$data,strlen($data));
    }
}
exit(0);

以上就是多历程定名管通通讯【无血缘关系历程】PHP 版本的细致内容,更多请关注ki4网别的相干文章!

标签:PHP