0

我运行一个带有名为 Log Block 的附加组件的我的世界服务器,它记录了服务器上完成的所有事情,现在我正在那里创建一个“管理”面板,它潜入数据库并计算挖掘和放置的块的总数。

但是我该如何实现这一点,我说的是 300 万行并且还在增加。

我应该使用 count(*) 每天运行一次 cron 作业,然后保存此结果,还是有更好的方法来实现这一点?

这是我此时的代码

$result = mysql_query("SELECT count(id) FROM `lb-world` WHERE type='0' AND data='0'");
$result = mysql_fetch_array($result);
4

3 回答 3

1
  $result = mysql_query("SELECT count(id) FROM `lb-world` WHERE type='0' AND data='0'");
  $result = mysql_fetch_array($result);

  echo $result[0]; //Output amount of rows
于 2013-07-16T15:14:41.040 回答
0

如果您只想要前一天的计数,那么在一天开始时运行一个 cron 来获取计数。如果您想要更准确的计数,请保留每小时左右的统计数据。如果数量很大,最好不要对每个页面加载进行计数。

您可能还希望做的事情是使用 MySQLAS语句使您的代码更清晰一些。

SELECT COUNT(id) AS count FROM...

这将返回以count第一行作为计数命名的列。然后您可以获取数组 ( *_fetch_array) 并使用以下方法获取值:

$array['count']

这将返回您想要的计数,因为mysql_num_rows总是返回 1,因为只给出了一行。

注意:不要使用 MySQL_* 命令,因为它们已被弃用。改用 MySQLi_* 或 PDO

于 2013-07-16T15:28:51.010 回答
0
$result = mysql_query("SELECT id FROM `lb-world` WHERE type='0' AND data='0'");
$result = mysql_num_rows($result);
echo $result;

上面的代码工作正常。另一个例子见下:

$result = mysql_query("SELECT count(id) AS myid FROM `lb-world` WHERE type='0' AND data='0'");
$result = mysql_fetch_array($result);
echo $result['myid'];
于 2013-07-16T15:24:19.927 回答