我正在使用共享主機。我看到越來越多的流程。當我查看ps aux
時,我看到每天都會添加大約兩個<defunct>
進程lsphp
。現在總數已經超過了40個,而且這個託管有100個流程的硬頂,這讓我很擔心。在共享主機上處理殭屍PHP進程
我注意到這些進程的運行TIME
是0:29
或0:30
。這讓我懷疑這些是執行時間結束的進程。我在接近開始的代碼中手動設置了這個時間:ini_set('max_execution_time', 30);
,因爲我網站上最慢的腳本運行了大約3-5秒,而30秒似乎給了足夠大的差距來知道該進程已經掛起並且不會繼續。然而,這似乎已經倒退了。
我查看了應用程序日誌,看起來掛起的進程(至少超過時間限制的進程)是最長的DomPDF進程。我的猜測是,用戶請求PDF,但在PDF準備好之前關閉連接,並且發送了答案,也許這會以某種方式使進程處於空閒狀態......或者只是DomPDF進入這種狀態?
可能是什麼原因?我能做些什麼來解決這個問題?
我可以以某種方式(通過修改PHP腳本)防止這些進程zombifying?我有沒有機會殺掉進程(我沒有權利重啓機器或殺死父進程)。