Home >Backend Development >PHP Tutorial >PHP的进程的疑惑

PHP的进程的疑惑

WBOY
WBOYOriginal
2016-06-06 20:31:291015browse

1.两个人同时访问一个文件时,PHP会有两个进程吗?
比如for($i=0;$iecho 'aaa';

}
A用户还没执行完,B用户又来了。

回复内容:

1.两个人同时访问一个文件时,PHP会有两个进程吗?
比如for($i=0;$iecho '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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn