PHP页面需要很长时间才能加载
Posted
技术标签:
【中文标题】PHP页面需要很长时间才能加载【英文标题】:PHP page taking a long time to load 【发布时间】:2014-08-15 07:00:02 【问题描述】:我正在构建我的网站,在其中一个页面中,我使用 mysql 和 php 来加载一些信息。虽然与所有其他不使用数据库的页面相比,该页面需要很长时间才能加载。
在我的代码中,我多次使用:
$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_*
函数已折旧。您应该考虑使用 MySQLi
或 PDO
【参考方案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页面需要很长时间才能加载的主要内容,如果未能解决你的问题,请参考以下文章
PHP 页面加载问题:PHP 致命错误:超过 30 秒的最大执行时间