扫码关注官方订阅号
1.两个人同时访问一个文件时,PHP会有两个进程吗?比如for($i=0;$i<1000000){echo 'aaa';
}A用户还没执行完,B用户又来了。
闭关修行中......
假设配置了5个PHP-FPM worker进程. pm = static pm.max_children = 5
epoll事件驱动(events.mechanism = epoll)的master进程会把新的请求分配给空闲的worker进程.
如果没有空闲的worker进程,master进程会把请求分配一个其中一个正常处理其他请求的worker进程,进入到backlog挂起的连接队列里,排队等待处理,默认值为listen.backlog = 128.
像Linux,Nginx,MySQL也都有backlog这个概念: Linux: sudo sysctl -a|grep backlog net.ipv4.tcp_max_syn_backlog = 256 Nginx: listen 80 backlog=511; MySQL: show variables like 'back_log' Variable_name Value back_log 80
如果是跑在fastcgi上的,就是多个进程;如果是跑Apache模块里的,则是多个线程, 一个请求对应一个进程/线程,一个进程/线程只能同时处理一个请求。 现在有些仿reactor模式的PHP框架可以做到单进程/线程同时处理多个请求的,比如Swoole
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
假设配置了5个PHP-FPM worker进程.
pm = static
pm.max_children = 5
epoll事件驱动(events.mechanism = epoll)的master进程会把新的请求分配给空闲的worker进程.
如果没有空闲的worker进程,master进程会把请求分配一个其中一个正常处理其他请求的worker进程,进入到backlog挂起的连接队列里,排队等待处理,默认值为listen.backlog = 128.
像Linux,Nginx,MySQL也都有backlog这个概念:
Linux:
sudo sysctl -a|grep backlog
net.ipv4.tcp_max_syn_backlog = 256
Nginx:
listen 80 backlog=511;
MySQL:
show variables like 'back_log'
Variable_name Value
back_log 80
如果是跑在fastcgi上的,就是多个进程;如果是跑Apache模块里的,则是多个线程,
一个请求对应一个进程/线程,一个进程/线程只能同时处理一个请求。
现在有些仿reactor模式的PHP框架可以做到单进程/线程同时处理多个请求的,比如Swoole