php中文网 课程
每日17点准时技术干货分享
进程通信:
1、中断系统
2、无名管道
只能用于父子进程,兄弟进程之间的通信,且没有名字,称为无名管道,传输的数据是无格式的,双方可自己定义格式,不依赖于文件系统。
3、命名管道
用于无名管道无法实现的骚操作,没任何关系的进程也能进行通信
PS:务必了解进程阻塞,非阻塞原理,管道文件,进程
应用场景举例说明:如使用php的socketAPI编写一个类似workerman的网络框架,可以做统一中断信号事件处理
中断处理程序只负责接受中断请求,通过管道写端写入数据,主进程通过监听文件描述符上的事件再处理。不会让中断处理程序等待过长的时间。
当然通过命名管道也可以实现跨语言进程间的通信。
$filePath=$argv[1];if(posix_mkfifo($filePath,)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,)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);
-END-