php超时时间

Posted Burning_Leaf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php超时时间相关的知识,希望对你有一定的参考价值。

php脚本的执行有三种状态:

  • 0 - NORMAL(正常)
  • 1 - ABORTED(异常退出)
  • 2 - TIMEOUT(超时)

NORMAL 状态为正常执行,ABORTED状态为客户端终端链接,TIMEOUT状态为PHP执行时间超出时限。

那么问题来了:PHP的执行时限是多少呢?

PHP内部有一个计时器,默认的执行时间是30秒,这个值可以通过修改php.ini中的max_excution_time或httpd.conf设置中对应的“php_value max_execution_time”参数或使用PHP的set_time_limit()函数来更改。当脚本超时时就会退出。

不过有个问题需要注意一下:set_time_limit()函数只有在非安全模式下才能使用。

 

还有一个有意思的事情:

在客户端中断连接的时候可以设定PHP继续执行,因为有时候让脚本完整的运行会带来很多方便,即使没有远程浏览器接受脚本的输出。默认情况下远程客户端链接中断脚本即会退出,可以通过 php.ini 的ignore_use_abort 或 httpd.conf 中对应的 “php_value ignore_user_abort” 以及 PHP函数 ignore_user_abort() 控制脚本忽略用户退出,让脚本继续执行。不过这就可能会出现ABORTED、TIMEOUT两种状态同时存在的情况(PHP允许这两种状态同时存在),此时通过 connection_status() 函数检查脚本状态时返回的是3,并且通过 register_shutdown_function()  函数设置的程序关闭出发程序会被执行。

程序关闭出发程序”就是:

如果在远程客户端链接中断时就让脚本停止执行,并且你想在这一事件发生时执行特定的操作,那么你可以使用 register_shutdown_function()  函数设置。

 



以上是关于php超时时间的主要内容,如果未能解决你的问题,请参考以下文章

php使用curl设置超时的重要性

nginx 和 php超时设置

Nginx+Apache+PHP超时时间设定

php连接mysql使用一段时间后连接数据库超时

PHP SoapClient 超时

php环境下nginx超时问题解决