我真的需要能够做我认为apache_child_terminate做的事情,但显然它在使用Apache2时不起作用(这就是我正在使用的......在prefork模式下的Apache 2)。
在完成当前请求后,是否有相同的方法可以“摆脱”或终止当前正在执行的Apache进程?
背景:
提前感谢任何建议!
答案 0 :(得分:1)
好的,所以这段代码基本上为Apache 2做了apache_child_terminate()等效的方法,在完成请求后很好地告诉Apache进程死掉:
<?php
// Terminate Apache 2 child process after request has been
// completed by sending a "friendly" SIGWINCH POSIX signal (28).
function kill_on_exit() {
posix_kill( getmypid(), 28 );
}
register_shutdown_function( 'kill_on_exit' );
?>
然而,这并没有解决我的问题。我最终通过完全关闭Apache KeepAlive来获得最佳性能。我把它添加到我的apache2.conf文件中:
KeepAlive Off
现在,我在特定页面上获得的每秒数百个请求不会占用资源4秒钟。它们完成得非常快,并且该过程可以重复用于另一个连接。我从具有大量内容的普通页面获得的性能实际上非常好,即使每个请求都通过与服务器上不同进程的不同连接。