Php 如何检查函数执行时间&;如果执行时间超过10秒,则返回

Php 如何检查函数执行时间&;如果执行时间超过10秒,则返回,php,laravel,Php,Laravel,我有一个函数&想要计算总执行时间。如果执行时间超过10秒,则从函数返回并中断循环 我有代码来计算执行时间,但如果执行时间超过10秒,我就不知道如何返回 for($i=0;$i<5;$i++) { $time_start = microtime(true); //call funtion show(10); $time_end = microtime(true); //Total execution time $total_time = $time_end - $tim

我有一个函数&想要计算总执行时间。如果执行时间超过10秒,则从函数返回并中断循环

我有代码来计算执行时间,但如果执行时间超过10秒,我就不知道如何返回

for($i=0;$i<5;$i++) {

  $time_start = microtime(true);

 //call funtion
 show(10);

 $time_end = microtime(true);

 //Total execution time
 $total_time = $time_end - $time_start;
 echo "Exe Time: ". $total_time;
}


function show() {
    sleep(4);
}

for($i=0;$i不幸的是,在php中无法捕获超时错误,但您几乎可以通过简单的数学和microtime()实现这一点


只要您认为合适,就检查它是否应该超时。这不是很准确,因为您无法为大多数函数设置时间限制(例如,如果您的函数调用file_get_contents(),则除了使用set_time_limit()之外,您无法为file_get_contents()设置时间限制),但无法捕获由set_time_limit生成的错误,并将终止整个php脚本:()

我们不能设置吗timeout@Omi这就是输入参数的作用。
函数f(int max_execution_time=10){
-最大执行时间可以在调用时确定,但默认为10秒。
f(15)
,现在最长时间是15秒。
f(5)
,现在超时是5秒,
f(100)
,现在超时是100秒。
function f(int max_execution_time=10){
$starttime=microtime(true);
//do stuff here
if((microtime(true)-$starttime) > $max_execution_time){
    return ETIMEDOUT;
}
//do more stuff here
if((microtime(true)-$starttime) > $max_execution_time){
    return ETIMEDOUT;
}
// and more stuff here, and repeat
if((microtime(true)-$starttime) > $max_execution_time){
    return ETIMEDOUT;
}    
// and finally, 
return SUCCESS;
}