有没有办法让函数超时?我有 10 分钟的时间来完成一项工作。该作业包含一个 for 循环,下面是一个示例:
<?php
foreach($arr as $key => $value){
some_function($key, $value); //This function does SSH and SFTP stuff
}
?>
$arr 有 15 个元素,some_function() 有时可能需要 1 分钟以上。事实上,有一次它被挂了5分钟。
有没有办法让函数调用超时并继续处理 $arr 中的下一个元素?
谢谢你!!
这取决于您的实施。 PHP 中 99% 的函数都是阻塞的。这意味着在当前函数完成之前处理不会继续。但是,如果函数包含循环,您可以添加自己的代码以在满足特定条件后中断循环。
像这样的事情:
foreach ($array as $value) {
perform_task($value);
}
function perform_task($value) {
$start_time = time();
while(true) {
if ((time() - $start_time) > 300) {
return false; // timeout, function took longer than 300 seconds
}
// Other processing
}
}
另一个不可能中断处理的示例:
foreach ($array as $value) {
perform_task($value);
}
function perform_task($value) {
// preg_replace is a blocking function
// There's no way to break out of it after a certain amount of time.
return preg_replace('/pattern/', 'replace', $value);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)