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

angryTom
發布: 2023-02-26 21:40:02
原創
2229 人瀏覽過

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板