導航:首頁 > 編程語言 > php實現多進程

php實現多進程

發布時間:2024-08-08 06:27:42

『壹』 php 到底是單進程還是多進程

默認是單進程,可以支持多進程

『貳』 php循環執行一個文件時,如何讓一個超時執行的跳過去,而不是中斷執行程序

用多進程的方式,你要先學習php實現多進程的方法。主要用到了pcntl和posix兩個擴展
思路是
開一個子進程,計算工作由子進程進行
主進程等待子進程的同時計時
如果超時,就殺掉子進程
不過前提是你系統是linux

// 代碼沒調試哦
$pid=pcntl_fork();
if ($pid == 0) {
// 復雜的計算
} else if ($pid > 0) {
$t = time();
while (true) {
$pid= pcntl_wait($s, WNOHANG);
if ($pid > 0) break;
else if ($pid < 0) {
echo 'error';
break;
}
else if (time() - $t > 30) {
posix_kill($pid, SIGKILL);
echo 'timeout';
} else {
sleep(1);
}
}
}

『叄』 啟動php-fpm為什麼有啟動了多個進程

php-fpm的兩種進程管理模式 php-fpm的進程數也是可以根據設置分為動態和靜態的。 一種是直接開啟指定數量的php-fpm進程,不再增加或者減少; 另一種則是開始的時候開啟一定數量的php-fpm進程,當請求量變大的時候,動態的增加php-fpm進程數到上限,當空閑的時候自動釋放空閑的進程數到一個下限。 這兩種不同的執行方式,可以根據伺服器的實際需求來進行調整。 這里先說一下涉及到這個的幾個參數吧,他們分別是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。 pm表示使用那種方式,有兩個值可以選擇,就是static(靜態)或者dynamic(動態)。 在更老一些的版本中,dynamic被稱作apache-like。這個要注意看配置文件給出的說明了。PHP5.3 php-fpm的默認靜態處理方式會使得php-cgi的進程長期佔用內存而無法釋放,這也是導致nginx出錯的原因之 一,因此可以將php-fpm的處理方式改成apache模式。 下面4個參數的意思分別為: pm.max_children:靜態方式下開啟的php-fpm進程數量。 pm.start_servers:動態方式下的起始php-fpm進程數量。 pm.min_spare_servers:動態方式下的最小php-fpm進程數量。 pm.max_spare_servers:動態方式下的最大php-fpm進程數量。 如果dm設置為static,那麼其實只有pm.max_children這個參數生效。系統會開啟設置的數量個php-fpm進程。 如果dm設置為dynamic,那麼pm.max_children參數失效,後面3個參數生效。系統會在php-fpm運行開始的時候啟動 pm.start_servers個php-fpm進程,然後根據系統的需求動態在pm.min_spare_servers和 pm.max_spare_servers之間調整php-fpm進程數。 那麼,對於我們的伺服器,選擇哪種執行方式比較好呢?事實上,跟Apache一樣,我們運行的PHP程序在執行完成後,或多或少會有內存泄露的問題。 這也是為什麼開始的時候一個php-fpm進程只佔用3M左右內存,運行一段時間後就會上升到20-30M的原因了。所以,動態方式因為會結束掉多餘的進程,可以回收釋放一些內存,所以推薦在內存較少的伺服器或者VPS上使用。具體最大數量根據 內存/20M 得到。比如說512M的VPS,建議pm.max_spare_servers設置為20。至於pm.min_spare_servers,則建議根據伺服器的負載情況來設置,比較合適的值在5~10之間。 然後對於比較大內存的伺服器來說,設置為靜態的話會提高效率。因為頻繁開關php-fpm進程也會有時滯,所以內存夠大的情況下開靜態效果會更好。數量也可以根據內存/30M 得到。比如說2GB內存的伺服器,可以設置為50;4GB內存可以設置為100等。

閱讀全文

與php實現多進程相關的資料

熱點內容
怎麼刪除一個app下載任務 瀏覽:713
python執行bat命令 瀏覽:471
什麼吉他調音器app最好 瀏覽:33
php程序員招聘試題 瀏覽:14
程序員升職記第九關最優解 瀏覽:317
三星安卓11怎麼訪問data文件夾 瀏覽:817
華三伺服器怎麼設置開機自啟 瀏覽:711
釘郵登錄伺服器地址 瀏覽:644
起源編譯器適配第二款應用 瀏覽:433
cad弄斷線條命令 瀏覽:463
怎麼恢復手機app的安裝包 瀏覽:300
idea重啟項目不編譯 瀏覽:495
程序員那麼可愛演員表陸漓媽媽 瀏覽:127
linuxgadget驅動 瀏覽:594
華三調用acl的命令 瀏覽:9
資金流pdf 瀏覽:931
金融結演算法補充條款 瀏覽:291
什麼叫伺服器怎麼連接 瀏覽:521
空調壓縮機有製冷但室內不是很冷 瀏覽:839
如何查解壓成功 瀏覽:652