PHP
$SCode=$_POST['SCode'];
$ECode=$_POST['ECode'];
for($p=$SCode;$p<$ECode;$p++)
{
$dbResult= $dbHandle->query("
SELECT Code
FROM Mashaghel
Where Code=" . $p . "");
if(!isset($Mashaghel[0]["Code"]) || empty($Mashaghel[0]["Code"]))
{
$errorCode.=$p."،";
}
}
echo $errorCode."does not existed!";
我用
运行$_POST['SCode']='010100100101002084';
$_POST['ECode']='010100100101002087';
但这不起作用并说错误Maximum execution time of 60 seconds exceeded
虽然010100100101002084
和010100100101002087
之间的差异仅为3。
为什么循环无限!?
请帮帮我
答案 0 :(得分:1)
试试这个
for($p=0;$p<bcsub($ECode,$SCode);$p++)
{
$dbResult= $dbHandle->query("SELECT Code FROM Mashaghel
Where Code=" . bcadd($SCode,$p) . "");
if(!isset($Mashaghel[0]["Code"]) || empty($Mashaghel[0]["Code"]))
{
$errorCode.=bcadd($SCode,$p)."،";
}
}
答案 1 :(得分:0)
脚本执行这么长时间的原因可能是循环中的查询。您可以尝试添加&#39; LIMIT 1&#39;查询,以便它只处理一行或将1更改为您需要处理的行数。
如果你仍然希望让你的脚本能够在这里执行更长时间的更多信息。默认情况下,PHP会在60秒后终止脚本以防止脚本挂起。 php.ini中有一个值定义了PHP脚本可以运行的最长时间 - 它被称为max_execution_time
。您还可以通过running set_time_limit()
函数(docs)更改特定脚本的此值。
答案 2 :(得分:0)
更改
for($p=$SCode;$p<$ECode;$p++)
到
for($p=0; $p < ($ECode - $SCode - 1); $p++)
在$p
$p+$SCode
答案 3 :(得分:0)
将限制分为两个数字。例如,认为你的for循环限制数是1000,将它分解为100,10使2嵌套for循环。
对于一些不可分割的数字你可以一个接一个地做一些循环,例如认为你的数字是11 做5 + 6就像你有2个for循环完全相继运行循环中的确切代码。 你也可以循环测试。
毕竟我不认为这是一种解决方案,它只是一种临时解决问题的方法。