stream实现 进程间通信 主要是通过stream_socket_pair这个函数
1、stream_socket_pair函数说明
2、案例1
单进程通信
2.1、源码
<?php
/**
* Copyright (C) Iamasb
* @project : 3、workerman相关知识点
* @explain : stream实现进程间通信
* @filename : 38、stream实现进程间通信.php
* @author : xiaobei 2801616735@qq.com
*/
$ sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
fwrite($sockets[1],”hello world\n”);
echo fgets($sockets[0]);
fwrite($sockets[0],”receive msg.\n”);
echo fgets ($sockets[1]);
2.2、测试结果
3、案例2
多进程通信
3.1、源码
<?php
/**
* Copyright (C) Iamasb
* @project : 3、workerman相关知识点
* @explain : stream实现进程间通信
* @filename : 38、stream实现进程间通信.php
* @author : xiaobei 2801616735@qq.com
*/
$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
$pid = pcntl_fork();
if ($pid == -1) {
die(‘could not fork’);
} else if ($pid) {
/* parent */
fclose($sockets[1]);
fwrite($sockets[0], “child PID: $pid\n”);
echo “parent->”.fgets($sockets[0]);
fclose($sockets[0]);
} else {
/* child */
fclose($sockets[0]);
echo “child->”.fgets($sockets[1]);
fwrite($sockets[1], “message from child\n”);
fclose($sockets[1]);
}
3.2、测试结果