分页代码超过最大执行时间

时间:2017-04-12 14:08:23

标签: php mysql pagination

所以我继承了一个最后在2003年左右维护的PHP应用程序。我已设法将其迁移到具有更新的mySQL和PHP的新主机,并替换了所有已弃用的命令并修复了除一个之外的所有错误。

有一个联系人列表页面,它将分页索引放在结果的底部,但错误输出最多30秒。我已经尝试过抛出CPU和内存,但奇怪的是旧硬件上的结果会在几秒钟后返回。

我已经从控制台检查了mySQL查询,结果在0.00秒内返回 - 只有3000条记录。在while循环期间发生错误。

$order="SELECT COUNT(*) FROM company where isbroker='0'";
  $order2=mysqli_query($db,$order) or die("2");
  $d=0;
  $f=0;
  $g=1;
  $order3=mysqli_fetch_array($order2, MYSQLI_NUM);
  $prev=$start-20;
  $next=$start+20;
  if($start>=20) {
    $begcode_sql="select companycode,companyname from company where isbroker='0' " .
                 "order by companyname limit 0,1";
    $begcode_handle=mysqli_query($db,$begcode_sql) or die (mysqli_error());
    list($begcode,$begcompname)=mysqli_fetch_array($begcode_handle);
    $begcode=substr($begcompname,0,4);
    print "<td><A title='$begcompname' href='view.php'><font color='white'>First<br />$begcode</font></a></td>";
    print "<td><A href='view.php?start=$prev'><font color='white'><<</font></a>&nbsp;</td>";
  }
  print "<p>Begin pagination code</p"; 
  #script is timing out here... too long to run    
while($f < $order3) {
        if($f % 20 == 0) {
            if($f >= $start-5 * 20 && $d < 10) {
                print "<td align='center'>";
                $begcode_sql="select companycode,companyname from company where isbroker='0' " .
                    "order by companyname limit $f,1";
                $begcode_handle=mysqli_query($db,$begcode_sql) or die (mysqli_error());
                list($begcode,$begcompname)=mysqli_fetch_array($begcode_handle, MYSQLI_NUM);

                if ( $f != $start ) {
                    print "<A title='$begcompname' href='view.php?start=$f'><b><font color='white'>";
                    $islast=0;
                } else {
                    print "<font color='grey'>";
                    $islast=1;
                }
                print $g . "<br />" . substr($begcompname,0,4) . "</font>";
                if ( $f != $start ) {
                    print "</b></a>";
                }
                print "</td>";
                $d++;
            }
            $g++;

        }
        $f++;
    }

0 个答案:

没有答案