资讯专栏INFORMATION COLUMN

PHP进程通信

haobowd / 945人阅读

摘要:一进程间通信理解间进程通信机制,先了解下进程间有哪些通讯机制历史发展按照历史来源主要有两大块的管道,,信号的消息队列,共享内存,信号灯。信号量主要作为进程间,以及进程内部线程之间的通讯手段。主要依赖,兼容扩展实现方式的进程间通信之消息队列。

PHP间进程如何通信,PHP相关的服务的IPC是实现方式,IPC的思想如何用到项目中。

一、linux进程间通信

理解php间进程通信机制,先了解下linux进程间有哪些通讯机制

1.1 历史发展

linux ipc 按照历史来源主要有两大块

AT&T的system v IPc:管道,FIFO,信号

BSD的socket Ipc :消息队列,共享内存,信号灯。

1.2 主要方式

总结起来主要有以下六种方式

1:管道【pipe】:主要是有关系的进程之间的通讯,例如ls xx |grep xx。

2:信号【signal】:通过中间进程来管理进程之间的通讯,属于比较复杂的进程间通讯方式。

3:消息队列【message】:消息的链接表,进程生产和消费消费消息队列。

优势:克服了信号量承载的消息少,管道只能用规定的字节流,同时受到缓冲区大小的约束的问题 (而且读写是有队列的,有一个写,就只有一个能读到,比较简单,不需要同步和互斥)

缺点:太过简单,处理复杂情况可能会造成饥饿现象

4:共享内存。多个进程访问同一个内存区。最快的IPC方式,但是需要处理进程间的同步和互斥。 同时也是当下使用最广泛的IPC,例如nginx,框架通讯,配置中心都是该原理。

5:信号量【semaphore】:主要作为进程间,以及进程内部线程之间的通讯手段。nginx早起的channel机制就类似于信号量

6:套接字【socket】:不同机器之间的通讯手段。处于tcp-》socket-》http之间的一个协议。

二、php进程通讯有哪些方式

最好的语言php有哪些IPC的方式

pcntl扩展:主要的进程扩展,完成进程的创建,子进程的创建,也是当前使用比较广的多进程。

posix扩展:完成posix兼容机通用api,如获取进程id,杀死进程等。主要依赖 IEEE 1003.1 (POSIX.1) ,兼容posix

sysvmsg扩展:实现system v方式的进程间通信之消息队列。

sysvsem扩展:实现system v方式的信号量。

sysvshm扩展:实现system v方式的共享内存。

sockets扩展:实现socket通信,跨机器,跨平台。

php也有一些封装好的异步进程处理框架:例如swoole,workman等

三、与php相关的IPC 3.1 nginx的IPC

nginx的ipc主要有两种:

早期:channel 机制:类似于信号,标示不同进程以及进程与子进程之间的套接字,同时具有继承关系。
缺点:过于复杂,也产生了过多的套接字,造成存储浪费。

当前主流:共享内存方式:快,写入数据少,方便。

具体可以参见这篇文章:写的非常好 https://rocfang.gitbooks.io/d...

3.2 apache的IPC

apache:https://arrow.apache.org/docs...

四、实际应用中的IPC

在平时的项目中,类似于php和linux的IPC的思想大量存在,深入理解。

socket方式:不同项目间通讯,跨机微服务等等,也是使用最广泛的IPC。

共享内存方式:配置中心,公共数据库,甚至git都可以看做共享内存的衍生;`共享内存就必须要注意同步和互斥。

cache :是共享内存和管道结合的思想

项目流式架构:管道的方式,可以大量的节省空间和时间的通讯方式。

【转载请注明:php进程通信 | 靠谱崔小拽 】

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23157.html

相关文章

  • 深入剖析 Web 服务器与 PHP 应用之间的通信机制 - 掌握 CGI 和 FastCGI 协议的

    摘要:深入协议从功能上来讲,协议已经完全能够解决服务器与应用之间的数据通信问题。消息头信息主要的消息头信息如下用于表示协议版本号。从服务器发送到应用,表示中止一个处理中的请求。另外我们还需要明确一点就是服务器与进程间通信是无序的。 本文首发于 深入剖析 Web 服务器与 PHP 应用之间的通信机制 - 掌握 CGI 和 FastCGI 协议的运行原理,转载请注明出处! 身为一名使用 PHP ...

    mumumu 评论0 收藏0
  • PHP-FPM 与 Nginx 的通信机制总结

    摘要:介绍协议与协议每种动态语言等的代码文件需要通过对应的解析器才能被服务器识别,而协议就是用来使解释器与服务器可以互相通信。而这样的面向连接的协议,可以更好的保证通信的正确性和完整性。在各自的配置文件里设置用户通过以上配置即可完成与的通信。 PHP-FPM 介绍 CGI 协议与 FastCGI 协议每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而...

    garfileo 评论0 收藏0
  • PHP-FPM 与 Nginx 的通信机制总结

    摘要:介绍协议与协议每种动态语言等的代码文件需要通过对应的解析器才能被服务器识别,而协议就是用来使解释器与服务器可以互相通信。而这样的面向连接的协议,可以更好的保证通信的正确性和完整性。在各自的配置文件里设置用户通过以上配置即可完成与的通信。 PHP-FPM 介绍 CGI 协议与 FastCGI 协议每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而...

    Turbo 评论0 收藏0
  • PHP-FPM 与 Nginx 的通信机制总结

    摘要:而这样的面向连接的协议,可以更好的保证通信的正确性和完整性。在各自的配置文件里设置用户通过以上配置即可完成与的通信。个人总结,若有不对,敬请指正 PHP-FPM 介绍 CGI 协议与 FastCGI 协议 每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互相通信。PHP 文件在服务器上的解析需要用到 ...

    gekylin 评论0 收藏0
  • PHP-FPM 与 Nginx 的通信机制总结

    摘要:而这样的面向连接的协议,可以更好的保证通信的正确性和完整性。在各自的配置文件里设置用户通过以上配置即可完成与的通信。个人总结,若有不对,敬请指正 PHP-FPM 介绍 CGI 协议与 FastCGI 协议 每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互相通信。PHP 文件在服务器上的解析需要用到 ...

    whidy 评论0 收藏0

发表评论

0条评论

haobowd

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<