Linux
如何在伺服器級別使用無限循環自動終止 PHP 程序
我的伺服器上有一個沙箱,允許使用者執行他們自己的 PHP 腳本。如果 PHP 腳本有一個無限循環,它只會在 Apache 超時(30 秒)時停止,這顯然不太理想。我知道一些網路主機會自動殺死一個消耗過多 CPU 時間過長的 PHP 腳本。如何在 Linux 的伺服器級別實現類似的功能,但又不會殺死需要很長時間的 PHP 程序(例如,使用睡眠語句或等待網路延遲)?
作為一個額外的問題,我如何對記憶體使用做同樣的事情?我知道 PHP 已經內置了記憶體限制,但是包含在這個沙箱中的是一個 PHP 擴展,它在控制權返回 PHP 之前不會實現這些限制,此時如果程序超過限制,它就會被殺死,但到那時它也是晚了。與此同時,它可能已經換掉了整個交換磁碟,從而使伺服器陷入癱瘓。
您可以使用RLimitCPU和RLimitMem將其鎖定在 Apache 中。
或者,您可以從作業系統本身每隔一段時間調整整個過程。