我的服务器上有一个沙盒,我允许用户在其中运行自己的 PHP 脚本。如果 PHP 脚本有无限循环,则只有当 Apache 超时(30 秒)时它才会停止,这显然不太理想。我知道有些 Web 主机会自动终止长时间占用过多 CPU 的 PHP 脚本。如何在 Linux 的服务器级别实现类似功能,但又不终止耗时较长的 PHP 进程(例如使用 sleep 语句或等待网络延迟)?
另外还有一个问题,我该如何对内存使用情况做同样的事情?我知道 PHP 内置了内存限制,但此沙箱中包含一个 PHP 扩展,它不会实现这些限制,直到控制权返回到 PHP,此时如果进程超过限制,它将被终止,但那时已经太晚了。在此期间,它可能已经交换了整个交换磁盘,使服务器陷入缓慢运行。