首頁 >後端開發 >PHP問題 >php運行過長導致不回應其他請求

php運行過長導致不回應其他請求

angryTom
angryTom原創
2019-10-16 16:09:102257瀏覽

php運行過長導致不回應其他請求

要執行十幾分鐘的PHP腳本就不要在PHP-FPM裡跑了。

1. 建議執行在PHP-FPM中的PHP腳本用pclose(popen())無阻塞開啟一個PHP-CLI程序執行你的腳本。

2. 執行完成後把訊息插入資料庫。

3. 前台透過AJAX定時輪詢進行訊息通知(類似知乎的訊息通知一樣)。

如果你一定要在PHP-FPM中跑這個耗時很長的腳本也不是不行。

首先你需要設定Nginx把這個腳本轉送給一個預先設定好的獨立的PHP-FPM動態進程池(不同的PHP-FPM進程池監聽不同的連接埠)來處理,這樣該腳本的執行不會影響到其他PHP-FPM進程池。而且動態進程池(pm = dynamic)能夠動態fork出更多的進程來處理腳本,代價就是記憶體消耗多點,這時你最好配置一個最大進程數(pm.max_children = 20)。

如果你想讓PHP-FPM結束HTTP請求後繼續處理業務,可以用fastcgi_finish_request()這個PHP-FPM提供的函數。

 推薦:《PHP教學》

#

以上是php運行過長導致不回應其他請求的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:php到底好不好下一篇:php到底好不好