我发现许多运行PHP的网站,其中的帖子从数百个回到0。
例如,具有数百个帖子计数的用户发布论坛主题。 负载非常慢......当成功发布时,该用户帖子计数变为0。我知道这是因为没有足够的PHP内存。
所有运行PHP的网站。当对PHP使用低内存时,通常该帖子的描述和很多其他内容将变为空白。我想我对mysql没有任何问题。我给mysql提供了大量内存和大量优化。
这个问题只发生在PHP?
(如果我错了,请纠正我)
答案 0 :(得分:1)
因此,发布有大量帖子的用户的速度很慢。对于帖子很少或根本没有帖子的用户来说,它会快速吗?你是如何确定职位数的?你使用的是:
$sql = "SELECT count(*) FROM posts WHERE userID = $someID";
$res = mysql_query($sql) or die("Mysql error: " . mysql_error());
$post_count = mysql_fetch($res, 0, 0);
或类似的东西:
$sql = "SELECT * FROM posts WHERE userID = $someID";
$res = mysql_query($res) or die("Mysql error: " . mysql_error());
$post_count = 0;
while($row = mysql_fetch_assoc($res)) {
$post_count++;
}
第一个将整体运行得更快,因为您只检索一个数字。假设'userID'字段被正确编入索引,那么在任何合理的数据集上,没有理由这样的构造需要花费超过一秒或两秒的时间来运行。
然而,第二个将运行得慢一些。它从每个匹配的记录中获取所有数据,无论是否需要。然后抛弃那些数据,只是增加一个计数器。如果该表中有blob字段,那么您还要检索blob,这可能会超出可用内存。
同样,您是否在脚本中进行了正确的错误检查?永远不要假设查询将成功运行。即使SQL是正确的,查询失败还有很多其他原因。每次数据库调用后,请务必检查mysql_error()
及其各种表兄弟。
除此之外,你还没有给我们任何工作。这些只是一些一般提示。也许提出一个运行缓慢的发布代码示例。