为了账号安全,请及时绑定邮箱和手机立即绑定

关于php的运行机制问题有点疑惑。

关于php的运行机制问题有点疑惑。

猛跑小猪 2019-05-08 17:13:39
最近在学习高并发,关于php的运行机制,我有点疑惑。我自己是这样认为的:比如php接受一个请求,运行5秒钟(夸张点说),那么10:00的时候如果同时有5个请求连接php,那么是不是其中一个请求首先被执行,然后其他4个处于阻塞(等待)中?10:05第一个请求执行完毕,然后执行第二个......10:00第一个开始执行10:05第二个开始执行10:10第三个开始执行。。。这这样的吗?还是说php像比如浏览器这样,可以同时开多个窗口同时处理呢?
查看完整描述

2 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

PHP是属于多进程模型
在PHP开启进程的时候,就会启动配置的marster进程及相应的配置数的worker进程,如:
root10510.00.22746445588?Ss2月192:57php-fpm:masterprocess(/usr/local/php/etc/php-fpm.conf)
www10630.00.828262015744?S2月190:42php-fpm:poolwww
www10650.00.728108013724?S2月190:41php-fpm:poolwww
www10710.00.728082414092?S2月190:40php-fpm:poolwww
www10720.00.627953612836?S2月190:44php-fpm:poolwww
www10760.00.728108014328?S2月190:41php-fpm:poolwww
www10770.00.728082814124?S2月190:42php-fpm:poolwww
www10830.00.728108414440?S2月190:41php-fpm:poolwww
php-fpmmaster进程负责创建和管理woker进程,同时负责监听listen连接,master进程是多路复用的;woker进程负责accept请求连接,同时处理请求,一个woker进程可以处理多个请求(复用,不需要每次都fork一个woker进程),但一个woker进程一次只能处理一个请求。至于worker进程的配置,你可以再详细去了解一下。
                            
查看完整回答
反对 回复 2019-05-08
?
达令说

TA贡献1821条经验 获得超6个赞

PHP-FPM下,一个进程同一时刻只能处理一个请求,请求结束后不会关闭进程,但进程会释放资源。你可以这样理解,每来一个请求,PHP-FPM的工作进程会调用内置的PHP解释器执行脚本处理请求,完成后释放资源接着处理下一个请求,但工作进程本身是支持后台常驻的。另外,如果PHP跑在Swoole下,则PHP逻辑是常驻内存的,即PHP里的全局资源,包括定义的全局变量、函数、类,则都是常驻内存的。
                            
查看完整回答
反对 回复 2019-05-08
  • 2 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信