给每个循环执行30秒的时间

时间:2013-07-03 07:38:35

标签: php

我的应用程序托管在Siteground中,位于共享主机中。我已经构建了一个每晚执行php文件的cron作业。问题是该文件包含执行代码的主循环85次。更确切地说,我采用数据数组并操纵它们。这样做了85次。 像这样:

<?php
$main_array = array("//85 elements");
foreach ($main_array as $var){

 $array1 = array ("//a lot of data");
//manipulate array1

}
?>

由于对采集数据进行了很多操作,因此完全执行需要2分5秒。任何机会..有没有办法为每个“foreach”循环设置30秒的执行时间? 我无法转移到专用主机,所以我需要想出其他的东西..

先谢谢

4 个答案:

答案 0 :(得分:3)

使用microtime()来评估每个循环的运行时间。

<?php
$main_array = array("//85 elements");
foreach ($main_array as $var){
  $time_start = microtime(true);
  $array1 = array ("//a lot of data");
  //manipulate array1
  $time_end = microtime(true);
  $time = $time_end - $time_start;
  //check sometimes in your script whether execution time is reached
  if($time > 30){
    break; //or continue; which you want
  }
}
?>

http://php.net/manual/en/function.microtime.php

但是执行时间真的很长,什么是酸性脚本计算?也许有更有效的方法可以做到这一点......

答案 1 :(得分:1)

set_time_limit(30); //Enter the value in seconds

检查php中的set_time_limit()

答案 2 :(得分:1)

使用代码顶部的set_time_limit(0);功能。

<强> PHP Manual

  

设置允许脚本运行的最长时间(以秒为单位)   在它被解析器终止之前。这有助于防止不良   从捆绑服务器编写脚本。默认设置为30。   从命令行运行PHP时,默认设置为0。

     

最大执行时间不受系统调用流的影响   有关更多信息,请参阅set_time_limit()函数   的信息。

     

在safe中运行时,无法使用ini_set()更改此设置   模式。唯一的解决方法是关闭安全模式或更改   php.ini中的时间限制。

     

您的网络服务器可能还有其他超时配置   中断PHP执行。 Apache有一个Timeout指令,IIS有一个   CGI超时功能。两者都默认为300秒。查看您的Web服务器   有关具体细节的文档。

答案 3 :(得分:0)

set_time_limit(999); // some number you want

试试这个。