关于PHP中的超时研究
在PHP脚本中可以使用 set_time_limit 来设置脚本的执行最大时间限制,但是用于网络连接的时间则不会计算在这里面。下面我们看两个例子,来验证一下。
例一:
<?php
set_time_limit(2);
for($i=1;$i<100000000000000;$i++){
$a = array(12,34,123,3412,1234123,12341234,12341234,123412341,1234123);
$v = array(‘dfsdfasdfasdfsadf’,’fasdfsadfasdf’,’fasdfasdf’,’fasdfasdfasdfasd’);
array_merge($a,$v);
}
该例子是一个纯运行的php脚本,执行结果
Fatal error: Maximum execution time of 2 seconds exceeded in /home/ety001/wwwroot/localhost/time.php on line 6
可见,我们设置的set_time_limit(2)生效了,在脚本执行到两秒的时候,虽然没有运行结束,但是php还是强制停止了脚本的运行。
但是我们还需要捕获到这个异常情况,并进行相应的处理。
PHP异常处理中可以通过set_error_handler来捕获.,但是却只能捕获 NOTICE/WARNING 级别的错误, 对于 E_ERROR 是无能为力的。
register_shutdown_function 能解决 set_error_handler 的不足.