Heim > Backend-Entwicklung > PHP-Tutorial > PHP的进程的疑惑

PHP的进程的疑惑

WBOY
Freigeben: 2016-06-06 20:31:29
Original
1143 Leute haben es durchsucht

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage