我的应用程序托管在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秒的执行时间? 我无法转移到专用主机,所以我需要想出其他的东西..
先谢谢
答案 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
试试这个。