PHP脚本可以自行中止或检测堕胎吗?

时间:2009-09-15 17:23:00

标签: php http scripting webserver abort

PHP脚本可以continue executing after the HTTP page request,那么当我完成它后,如何最终阻止它执行呢?

此外,是否有事件要检测操作系统何时强制中止脚本?或者如何保留内部计时器以预测max_execution_time

5 个答案:

答案 0 :(得分:8)

exit()/die()将停止php脚本。

要知道何时停止脚本,您只需使用microtime作为计时器并将其保存为常量(或从php.ini文件中取出)最长执行时间。

您还可以查看Connection handling信息。我们在哪里有connection_aborted()connection_status()

之类的内容

但是你要解决的问题是什么?

答案 1 :(得分:5)

您可以使用register_shutdown_function注册在脚本执行结束时调用的函数。您可以使用它来检测脚本何时终止并执行某组操作。

答案 2 :(得分:4)

要在请求关闭时进行回叫,请使用register_shutdown_function( myfunction )

与大多数POSIX环境非常相似,PHP也支持signal handlers。您可以为SIGTERM事件注册自己的处理程序。

function my_abort_handler( $signo ) {
   echo "Aborted";
}

pcntl_signal( SIGTERM, "my_abort_handler" );

答案 3 :(得分:2)

您可能需要查看允许脚本向自身发送信号的pcntl-alarm。还包含一些关于如何捕获可由OS发送的终止信号的示例。并且确实死了()。

答案 4 :(得分:1)

好吧,你可以启动一个$start=microtime(true),它会返回一个时间戳。然后你可以继续检查microtime(true)并从你的开始时间中减去它,以获得自执行以来的秒数。

但是不,由于请求太长,你无法“捕获”脚本作为终止。你可以尝试在关机处理程序中做最后一分钟的事情,但我不确定PHP是否会尊重它。

看起来曾经有一个功能完全符合您的要求connection_timeout(),但它已被弃用并删除。但是,不知道是否有任何替代品。