我运行一个名为Log Block的附加组件的Minecraft服务器,它记录服务器上完成的所有操作,现在我在那里制作了一个“管理员”面板,它潜入数据库并计算开采的块总数和放置。
但是我怎么能实现这个目标,我说的是300万行而且数不胜数。
我应该每天运行一次cron作业并使用count(*)然后保存此结果,还是有更好的方法来实现这一目标?
这是我此时的代码
$result = mysql_query("SELECT count(id) FROM `lb-world` WHERE type='0' AND data='0'");
$result = mysql_fetch_array($result);
答案 0 :(得分: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
答案 1 :(得分: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'];
答案 2 :(得分:0)
如果您只想要前一天的计数,那么在当天开始时运行一个cron来计算。如果您想要更准确的计数,请保持每小时左右的统计数据。如果数量很大,那么每次加载页面都可能不是最好的。
您可能还希望使用MySQL AS
语句使您的代码更清晰。
SELECT COUNT(id) AS count FROM...
这将返回名为count
的列,其中第一行作为计数。然后你可以得到数组(*_fetch_array
)并使用:
$array['count']
这将返回您想要的计数,因为mysql_num_rows
将始终返回1,因为只有一行。
注意:不要使用MySQL_ *命令,因为它们已被弃用。请改用MySQLi_ *或PDO