for number on huge number

时间:2014-12-27 11:11:43

标签: php for-loop numbers

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虽然010100100101002084010100100101002087之间的差异仅为3。

为什么循环无限!?

请帮帮我

4 个答案:

答案 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循环完全相继运行循环中的确切代码。 你也可以循环测试。

毕竟我不认为这是一种解决方案,它只是一种临时解决问题的方法。