我正面临着一种奇特的行为,或者你可以在php中说出for循环的幽灵态度。我正在使用API检索10000个产品。之后我将这些产品插入我的Database.Codes在localhost中正常工作但在生产服务器中产生问题。我在下面描述它。
$value_array = array();
$counter=0;
$time_start = microtime(true);
for($j=0;$j<count($result);$j++)
{
if(isset($result->Item[$j]->itemID))
{
$value_array[] = (int)$result->Item[$j]->itemID.','.(int)$result->Item[$j]->systemSku;
$counter++;
}
else
{
var_dump($result);
die();
}
if($counter == 100)
{
echo $counter;
$time_end = microtime(true);
$execution_time = ($time_end - $time_start);
echo '<br /><b>Total Execution Time:</b> '.$execution_time.' Sec';
die();
}
}
以上代码创建如下所示的输出
100
Total Execution Time: 39.075633049011 Sec
但如果我改变下面的代码,我会得到一个白页(没有输出)。
$value_array = array();
$counter=0;
$time_start = microtime(true);
for($j=0;$j<count($result);$j++)
{
if(isset($result->Item[$j]->itemID))
{
$value_array[] = (int)$result->Item[$j]->itemID.','.(int)$result->Item[$j]->systemSku;
$counter++;
}
else
{
var_dump($result);
die();
}
if($counter == 9000) //I changed the code here
{
echo $counter;
$time_end = microtime(true);
$execution_time = ($time_end - $time_start);
echo '<br /><b>Total Execution Time:</b> '.$execution_time.' Sec';
die();
}
}
我再次更改了下面的代码。
$value_array = array();
$counter=0;
$time_start = microtime(true);
for($j=0;$j<count($result);$j++)
{
if(isset($result->Item[$j]->itemID))
{
$value_array[] = (int)$result->Item[$j]->itemID.','.(int)$result->Item[$j]->systemSku;
$counter++;
}
else
{
var_dump($result);
die();
}
echo $counter.'<br/>'; //I changed the code here
if($counter == 9000)
{
echo $counter;
$time_end = microtime(true);
$execution_time = ($time_end - $time_start);
echo '<br /><b>Total Execution Time:</b> '.$execution_time.' Sec';
die();
}
}
我得到的输出如下
all counter values
9000
Total Execution Time: 562.96646595001 Sec
可能是什么问题?为什么第一个代码表现得很奇怪?
答案 0 :(得分:3)
我认为脚本运行的时间限制仅在长时间没有生成输出时强制执行,因此定期回显某些内容有助于完成。但这只是猜测。
首先检查两台服务器的PHP设置的差异,可能是 max_execution_time
设置。
您可以使用phpinfo()