PHP页面需要很长时间才能加载

Posted

技术标签:

【中文标题】PHP页面需要很长时间才能加载【英文标题】:PHP page taking a long time to load 【发布时间】:2014-08-15 07:00:02 【问题描述】:

我正在构建我的网站,在其中一个页面中,我使用 mysqlphp 来加载一些信息。虽然与所有其他不使用数据库的页面相比,该页面需要很长时间才能加载。

在我的代码中,我多次使用:

$selectMember = mysql_query("SELECT name, nametag FROM members");
$countMembers = mysql_num_rows($selectMember);
[...]
    for($ID = 1; $ID <= $countMembers ; $ID++)
         $member = mysql_query("SELECT name, nametag FROM members WHERE ID = $ID");
         while($row = mysql_fetch_array($member)) 

我认为问题出在这部分代码中。不想放整个,因为它有 200 行。有什么方法可以使数据库研究更简单和/或使页面加载更快?

【问题讨论】:

循环内的查询几乎总是错误的。只需在一个查询中获取所有成员并循环结果 mysql_* 函数已折旧。您应该考虑使用 MySQLiPDO 【参考方案1】:

你只需要:

$member = mysql_query("SELECT name, nametag FROM members");
   while($row = mysql_fetch_array($member)) 

//show results
echo $row['name'];

无意义的循环和每个 id 一个查询导致延迟。

【讨论】:

【参考方案2】:

在这种情况下,您正在不必要地运行查询,并且“内部”查询是错误的。它们只是偶然起作用 - 因为您的成员按顺序编号而没有“漏洞”,所以按顺序生成的 ID确实在数据库中找到记录。

如果你这样做:

$selectMember = mysql_query("SELECT ID, name, nametag FROM members");

上面已经获取您在下面检索到的所有数据,并附上 ID:

$countMembers = mysql_num_rows($selectMember);

while($row = mysql_fetch_array($selectMember) 
    ....

也就是说,mysql_ 函数已弃用;您应该使用mysqli_ 或(恕我直言,更好;但您的里程可能会有所不同)PDO 功能。您绝对不想学习下一个 PHP 版本中可能不再存在的数据库策略!

Here 您将找到一些示例,说明如何通过更新的 MySQL 释放 PDO 的全部功能。

【讨论】:

非常感谢,伙计:D【参考方案3】:

你想要做的是这样的.....

$ids = "(";
for($ID = 1; $ID <= $countMembers ; $ID++)
    $ids.=$ID.",";
 
$ids = rtrim(",",$ids);
$ids.=")";

     $member = mysql_query("SELECT name, nametag FROM members WHERE ID IN $ids");
     while($row = mysql_fetch_array($member))  etc etc

但以上所有内容都是多余且毫无意义的,因为您已经在 $selectMember 变量中获取数据。因此,只需一个查询,您就已经掌握了一切......

 $selectMember = mysql_query("SELECT name, nametag FROM members");
 while($row = mysql_fetch_array($selectMember)) 
      echo $row[0];
      echo $row[1];
      // etc etc
 

【讨论】:

【参考方案4】:

不知道你为什么要这样做,但一个查询会做到这一点:

SELECT name, nametag FROM members
    WHERE ID BETWEEN 1 AND (SELECT COUNT(*) FROM members)

【讨论】:

虽然这是对问题的字面解释,但他似乎不太可能真的想将其限制为 id 的计数,我只是认为他很困惑

以上是关于PHP页面需要很长时间才能加载的主要内容,如果未能解决你的问题,请参考以下文章

加载gif需要太长时间才能加载

PHP 页面加载问题:PHP 致命错误:超过 30 秒的最大执行时间

asp.net 页面在服务器上需要很长时间的加载时间

代码有效,但需要很长时间才能加载“超过 30 秒的最大执行时间”以及错误

IconData 需要很长时间才能加载并且不显示图标

带有recyclerviews的碎片需要很长时间才能加载