1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > socket – 使用php多线程 多进程?

socket – 使用php多线程 多进程?

时间:2018-12-13 18:01:23

相关推荐

socket – 使用php多线程   多进程?

后端开发|php教程

php,socket,socket编程

后端开发-php教程

美发源码下载,vscode怎么设置成专业的,ubuntu换oss,局域网布署tomcat,爬虫加入ck,php 制作简易论坛,东莞关键词seo优化公司lzw

I. php 多进程的使用情况怎样?? (绝大多数php程序都用上了 | 几乎用不上)

网站推广链接源码,vscode代码审计插件,ubuntu改了吗,mac tomcat位置,直接映射sqlite数据库,怎么看爬虫是不是装好了,php 正则替换 标签,seo优化软件免费广告,.net生成的网站在那里,网页tab代码,统计数据模板lzw

II. php 多线程的使用情况怎样?? (绝大多数php程序都用上了 | 几乎用不上)

.net环境监测源码,修改vscode终端的光标,恢复ubuntu设置,系统定时重启 tomcat,python爬虫 兼职,php 进销存手机版,十堰市seo优化,手机预测网站怎么建,微信长图模板lzw

III. php 多进程 , php多线程 相比较 java 怎样??(简直糟透了 | 不相上下)

网络上几乎都写到 php 不适合多线程(是否也不适合多进程??),是否这样就不需要了解多线程,多进程之类的php相关特性了??

然后最近由于个人喜好,想自己动手做一个 类似qq的网页版聊天工具,现在 基本上了解了 socket 通信 , 但 了解了下 workerman 这样的开源 通信框架,他的特性介绍里面包括以下几个:

I. php多进程 可以发挥多核cpu优势,提高性能,并支持高并发??

II . php单个进程可以支持几千甚至几万的并发连接,多进程则可以支持数十万甚至上百万的并发连接。 这句话该怎么理解?? 由于它采用的是 socket 的方式进行通信,那么端口数实际上是已经固定的,不会超过 65536 ,一个端口表示一对连接,这边说的 几千 -》 几万可能还好一点, 多进程下的 数十万,上百万,有那么 厉害吗??

回复内容:

I. php 多进程的使用情况怎样?? (绝大多数php程序都用上了 | 几乎用不上)

II. php 多线程的使用情况怎样?? (绝大多数php程序都用上了 | 几乎用不上)

III. php 多进程 , php多线程 相比较 java 怎样??(简直糟透了 | 不相上下)

网络上几乎都写到 php 不适合多线程(是否也不适合多进程??),是否这样就不需要了解多线程,多进程之类的php相关特性了??

然后最近由于个人喜好,想自己动手做一个 类似qq的网页版聊天工具,现在 基本上了解了 socket 通信 , 但 了解了下 workerman 这样的开源 通信框架,他的特性介绍里面包括以下几个:

I. php多进程 可以发挥多核cpu优势,提高性能,并支持高并发??

II . php单个进程可以支持几千甚至几万的并发连接,多进程则可以支持数十万甚至上百万的并发连接。 这句话该怎么理解?? 由于它采用的是 socket 的方式进行通信,那么端口数实际上是已经固定的,不会超过 65536 ,一个端口表示一对连接,这边说的 几千 -》 几万可能还好一点, 多进程下的 数十万,上百万,有那么 厉害吗??

纠正一个概念:端口总数是一个unsigned short,即65535。这不代表一个服务器只能支撑这么多连接!一个端口对应一个进程,一个进程的连接数更这个进程打开的socket描述符的数量是一致的。而描述符的数量是32位int数量级,当然系统有进程最多描述符的限制,可以通过内核参数来配置,但上个几十万肯定没问题的。

一个典型的多进程http服务器的工作原理大概是这样的:一个进程负责监听80端口的连接,当连接到来后,对应的描述符被内核创建出来,然后进程找一个相对空闲的子进程来处理这个描述符,即在这个描述符上读写数据。注意这里是子进程,正是因为子进程,才可以在父子进程间传递描述符。如果访问量上来了,子进程的数量不够了,父进程可以酌情创建新的子进程来处理描述符;父进程在一定程度上应当实现简单的负载平衡策略。

基于多线程的http服务器工作原理其实差不多,把上面的进程改成线程一样可以解释。

以上阐述跟php没有关系,php只不过是在这些底层的概念和系统调用上封装了而已。大多数人使用php是基于php的脚本解释器。而workerman应该是基于php封装的系统调用实现的http服务。

php进程是由php-fpm(fastcgi的实现)管理:master进程会把请求分发到子进程

master进程:服务与web server通信

通信实现方式一:http socket(主机+端口),会占用一个端口,所以也就是说这里php-fpm只占用一个端口

通信实现方式二:unix domain socket(进程间通信),是基于.sock文件的方式,不依赖网络协议,所以也就是说理论上不占用端口

pool进程:子进程,含解析器,解析脚本

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。