Php 如何提高分页速度

Php 如何提高分页速度,php,mysql,performance,pagination,Php,Mysql,Performance,Pagination,在我的项目中,我使用PHP进行了分页,我的做法如下: 每个按钮(下一页和上一页)都是超链接,通过传递GET变量(PAGENUMBER)链接到同一页。对于每个页面更改,都有用于的脚本 连接到数据库 查询指定页的数据 关闭 数据库连接。显示数据 问题是它工作得很慢。每次连接到数据库并查询数据并关闭数据库连接时是否有其他方法 另外,在分页过程中,我只想重新加载数据库中的数据,页面中的所有其他内容保持不变,不想重新加载。如何做到这一点 下面给出了脚本 <?php require_once(

在我的项目中,我使用PHP进行了分页,我的做法如下: 每个按钮(下一页和上一页)都是超链接,通过传递GET变量(PAGENUMBER)链接到同一页。对于每个页面更改,都有用于的脚本

  • 连接到数据库
  • 查询指定页的数据
  • 关闭
  • 数据库连接。显示数据
  • 问题是它工作得很慢。每次连接到数据库并查询数据并关闭数据库连接时是否有其他方法

    另外,在分页过程中,我只想重新加载数据库中的数据,页面中的所有其他内容保持不变,不想重新加载。如何做到这一点

    下面给出了脚本

        <?php
    require_once("./include/membersite_config.php");    //include files for login system
    if($fgmembersite->CheckLogin())
    {
        $login=true;
    }
    else
    {
        $login=false;
    }
    require_once("db.php"); 
    $con=connect();     //connect to db and select the db
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML>
        <HEAD>
            <TITLE> Gallery </TITLE>
            <META name="generator" content="Adobe Photoshop(R) CS Web Photo Gallery">
            <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <link href="images/galleryStyle.css" rel="stylesheet" type="text/css">
             <link rel="STYLESHEET" type="text/css" href="style/new.css" />
        </HEAD>
    <body  marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>
    <table><tr>
    <?php
    //////////////////DISPLAYING IMAGE THUNBNAILS//////////////////////
    $query="SELECT COUNT(*) FROM gallery ";
    $res = query($query);
    $raw=mysql_fetch_array($res);
    $imagecount=$raw[0];
    if($imagecount==0) { die ("No images found"); }
    $pagecount=ceil($imagecount/15); 
    $page = isset($_GET['page']) ? mysql_real_escape_string($_GET['page']) : 1;
    if (isset($_GET['page']))
    {
       if (!(ctype_digit($_GET['page']) and $_GET['page']>0 and $_GET['page']<=$pagecount))
       { 
           die ("You are not autorised to viw this page");
       }
    }
    $start= ($page*15)-15; 
    $query = "SELECT * FROM gallery  ORDER BY imageid DESC LIMIT $start , 15";
    $res = query($query);
    $count= mysql_num_rows($res);
    $index=0;
    for($i=1;$i<=3;$i++)
    {
    ?>
    <TR>
    <?php
    for($j=1;$j<=5;$j++)
    {
       if(!$raw=mysql_fetch_array($res)) {break;}
       $index++;
       $imageid=$raw['imageid'];
       $thumbpath= $raw['thumbpath'];
       $largepath=$raw['largepath'];
       $caption=$raw['caption'];
    ?>
    <A name=1 href="image.php?imageid=<?php echo $imageid ?>&imageindex=<?php echo ((($page-1)*15)+$index-1) ;  ?> "><IMG  border=0 src="<?php echo $thumbpath; ?>" height="75" width="75" alt="<?php echo $caption ?>" title="<?php echo $caption ?>" ></A><BR>
    <?php
    echo "<a href='delete.php?delete=yes&imageid=".$imageid.'&page='.$page."'>Delete </a>"
    echo "<a href='replace.php?update=yes&imageid=".$imageid.'&page='.$page."'>Replace </a>"
    ?>
    </table>
    </td>
    <?php } ?>
    </TR>
    <?php
    } 
    if ($page!=1)
    {
    ?>
    <td width=17><a href=" <?php echo $_SERVER['PHP_SELF'].'?page='.($page-1); ?> "><IMG SRC="images/previous.gif" BORDER=0></a></td>
    <?php  } ?>
    <td align=middle class="pagenums"><?php echo "page ".$page." of ".$pagecount ?></td>
    <?php
    if ($page!=$pagecount)
    {
    ?>
    <td align=right width=17><a href=" <?php echo $_SERVER['PHP_SELF'].'?page='.($page+1); ?> "><img border=0 src="images/next.gif"></a></td>
    <?php } ?>
    </table>
    </body>
    </html>
    
    
    画廊
    

    您不需要为每次页面更改连接/关闭数据库

    有很多可用选项

  • 使用javascript分页
  • ajax分页
  • 尝试减少分页代码(优化代码)

  • 使用ajax脚本在重新加载当前页面时连接并获取数据库值您可以这样做-----尝试ajax

    您可以使用ajax来实现这一点。计算一次计数,并在AJAX请求中使用iot。查询是什么样子的?数据库中有多少行?代码是什么样子的?这篇帖子上有一些有用的文章和讨论。一定要检查博文末尾的建议。@Thomas Potaire只有不到1000行。查询是最简单的查询,数据库中只有4列、字符串、整数和文件系统中图像文件的路径。页面内容是图像和一些标题。我的意思是,如果您需要我们的帮助,我们确实需要查看一些代码/查询。感谢您的回复,如何在页面更改期间保持连接。请帮助在页面顶部使用连接语句,或者将它们放入像config.PHP这样的PHP文件中,并使用
    include\u once('config.PHP')
    如果连接语句位于顶部,则每次加载页面时都会执行连接语句,也就是每次页面更改使用
    include\u once('config.PHP')的第二个方法
    在页面顶部@Amir,这种情况也在发生。