超时PHP中的一个函数

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了超时PHP中的一个函数脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法超时功能我有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);
}

脚本宝典总结

以上是脚本宝典为你收集整理的超时PHP中的一个函数全部内容,希望文章能够帮你解决超时PHP中的一个函数所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。