当前位置: 首页 > 面试题库 >

PHP中的函数超时

元景天
2023-03-14
问题内容

有没有办法使函数超时?我有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函数超时处理方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP函数超时处理方法。分享给大家供大家参考,具体如下: register_shutdown_function Registers the function named by function to be executed when script processing is c

  • 本文向大家介绍PHP中的zip_entry_compressed_size()函数,包括了PHP中的zip_entry_compressed_size()函数的使用技巧和注意事项,需要的朋友参考一下 zip_entry_compressed_size()函数返回zip归档条目的压缩文件大小。 语法 参数 zip_entry-邮政编码条目资源。需要。 返回 zip_entry_compressed_

  • 问题内容: 是否有一个PHP函数以与MySQL函数相同的格式返回日期和时间? 我知道如何使用来做,但是我在问是否只有一个功能。 例如,返回: 问题答案: 除了日期功能:

  • 本文向大家介绍PHP中的hebrevc()函数,包括了PHP中的hebrevc()函数的使用技巧和注意事项,需要的朋友参考一下 该函数用于通过换行转换将逻辑希伯来语文本转换为可视文本。还将新行(\ n)转换为<br>。 语法 参数 str-希伯来语输入字符串 maxcharline-每行将返回的最大字符数。 返回 该函数返回可视字符串。 以下是一个例子- 示例 以下是输出- 输出结果

  • 本文向大家介绍PHP中的array_fill_keys()函数,包括了PHP中的array_fill_keys()函数的使用技巧和注意事项,需要的朋友参考一下 array_fill_keys()函数用指定键的值填充数组。它返回填充的数组。 语法 参数 keys-用作键的值的数组。 值-这将被用来填充值。 返回 array_fill_keys()函数返回已填充的数组。 示例 输出结果 让我们来看另一

  • 本文向大家介绍PHP中的array_fill()函数,包括了PHP中的array_fill()函数的使用技巧和注意事项,需要的朋友参考一下 array_fill()函数用于用值填充数组。它返回填充的数组。它返回填充的数组。 语法 参数 start_index-返回的数组的第一个索引。需要。 num-要插入的元素数。需要。 value-将填充数组的值。需要。 返回 array_fill()函数返回已