有没有办法使函数超时?我有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); }