1.兩個人同時訪問一個文件時,PHP會有兩個進(jìn)程嗎?比如for($i=0;$i
PHP的進(jìn)程的疑惑
眼眸繁星
2019-04-21 20:42:56
TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊
假設(shè)配置了5個PHP-FPMworker進(jìn)程.pm=staticpm.max_children=5epoll事件驅(qū)動(events.mechanism=epoll)的master進(jìn)程會把新的請求分配給空閑的worker進(jìn)程.如果沒有空閑的worker進(jìn)程,master進(jìn)程會把請求分配一個其中一個正常處理其他請求的worker進(jìn)程,進(jìn)入到backlog掛起的連接隊列里,排隊等待處理,默認(rèn)值為listen.backlog=128.像Linux,Nginx,MySQL也都有backlog這個概念:Linux:sudosysctl-a|grepbacklognet.ipv4.tcp_max_syn_backlog=256Nginx:listen80backlog=511;MySQL:showvariableslike'back_log'Variable_nameValueback_log80
TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
如果是跑在fastcgi上的,就是多個進(jìn)程;如果是跑Apache模塊里的,則是多個線程,一個請求對應(yīng)一個進(jìn)程/線程,一個進(jìn)程/線程只能同時處理一個請求。現(xiàn)在有些仿reactor模式的PHP框架可以做到單進(jìn)程/線程同時處理多個請求的,比如Swoole
舉報