当前位置: 首页 > 后端技术 > PHP

PHP进程通信

时间:2023-03-29 17:45:19 PHP

PHP进程之间如何通信,PHP相关服务的IPC是实现方式,项目中如何使用IPC的思想。一、linux中的进程间通信要了解php进程之间的通信机制,首先要了解linux进程之间存在哪些通信机制。1.1linuxipc的发展历史根据史料,AT&T系统vIPc有两大块:管道、FIFO和信号BSDsocketsIpc:消息队列、共享内存、信号量。1.2主要方式总结起来有六种方式:1:管道[pipe]:主要是相关进程之间的通信,如lsxx|grepxx。2:Signal【信号】:通过中间进程管理进程间的通信,是一种比较复杂的进程间通信方式。3:消息队列[message]:消息链表,进程生产消费消息队列。优点:克服了信号量携带的消息少,管道只能使用指定的字节流,受缓冲区大小限制的问题(读写都有一个队列,如果有一个写,只有一个可以读取。比较简单,不需要同步和互斥)缺点:太简单了,处理复杂的情况可能会造成饿死4:共享内存。多个进程访问同一个内存区域。最快的IPC方式,但是需要处理进程间的同步和互斥。也是目前使用最广泛的IPC,如nginx、框架通信、配置中心等。5:信号量[semaphore]:主要用作进程与进程内部线程之间的通信手段。nginx早期的channel机制类似于semaphore6:socket[套接字]:不同机器之间的一种通信方式。tcp-"socket-"http之间的协议。2、php进程通信的方式有哪些?php最好的语言是什么?什么是IPC方法?posixextension:完成posix兼容机的通用api,如获取进程id,kill进程等。主要依赖IEEE1003.1(POSIX.1),兼容posixsysvmsgextension:实现systemv进程间通信的消息队列.Sysvsem扩展:实现系统v信号量。sysvshm扩展:实现systemv共享内存。Sockets扩展:实现socket通信,跨机器,跨平台。PHP也有一些封装好的异步进程处理框架:如swoole、workman等。3、PHP相关的IPC3.1nginx的IPCnginx中的IPC主要有两种:早期:通道机制:类似于信号,标记不同的进程而进程与子进程之间的Sockets也存在继承关系。缺点:过于复杂,生成的socket太多,造成存储空间的浪费。目前主流:共享内存方式:速度快,写入数据少,方便。详细可以参考这篇文章:写的很好https://rocfang.gitbooks.io/d...3.2Apache的IPCapache:https://arrow.apache.org/docs...4.实际应用中平时IPC的项目,有很多类似php、linux的IPC思想,深有体会。Socket方式:不同项目间通信、跨机器微服务等,也是应用最广泛的IPC。共享内存方式:配置中心、公共数据库,甚至git都可以看作是共享内存的衍生品;`共享内存一定要注意同步和互斥。cache:是共享内存和管道相结合的思想工程。流式架构:流水线的方式可以节省大量的通信空间和时间。【转载请注明:php进程通信|靠谱的崔晓妍】