post count设置为0.这是PHP的错误吗?

时间:2010-07-09 12:26:07

标签: php

我发现许多运行PHP的网站,其中的帖子从数百个回到0。

例如,具有数百个帖子计数的用户发布论坛主题。 负载非常慢......当成功发布时,该用户帖子计数变为0。

我知道这是因为没有足够的PHP内存。

所有运行PHP的网站。当对PHP使用低内存时,通常该帖子的描述和很多其他内容将变为空白。我想我对mysql没有任何问题。我给mysql提供了大量内存和大量优化。

这个问题只发生在PHP?

(如果我错了,请纠正我)

1 个答案:

答案 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()及其各种表兄弟。

除此之外,你还没有给我们任何工作。这些只是一些一般提示。也许提出一个运行缓慢的发布代码示例。