PHP或MySQL中是否有内置函数可以提供页面上使用的MySQL查询总数?我在许多网站(主要是论坛)上看到过,他们在底部有一条消息,上面写着“在0.6秒内生成20页查询页面”。
如果没有内置任何东西,那么我会在我的数据库类中添加一些东西来计算它们,但它似乎已经可用的那种功能。
答案 0 :(得分:7)
选项一是通过包装器传递所有查询:
function custom_mysql_query($sql)
{
$GLOBAL['query_count'] ++;
return mysql_query($sql);
}
请注意,这只是为了说明而没有错误处理等。
您可以在MySQL中查询运行的查询数量:
mysql> SHOW STATUS LIKE 'Com_select';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_select | 2 |
+---------------+-------+
1 row in set (0.00 sec)
您可能想要执行以下操作:
SHOW STATUS LIKE 'Com_%';
然后将Com_select,Com_update,Com_insert和Com_delete
加在一起答案 1 :(得分:4)
我所做的是创建一个重要的sql查询类,每次运行类中的查询方法时,它会向一个名为querycount的变量添加1,这样我就有了一个运行总计。
答案 2 :(得分:3)
PHP的原生mysql / mysqli扩展中没有任何内置功能。如果您正在使用数据库抽象层,则可能会内置某种类型的分析/基准测试,以便为您提供该信息。
副手,我知道Kohana通过Profiler库执行此操作。我认为大多数框架的DB库都做类似的事情。
如果您对使用第三方框架或数据库抽象层犹豫不决,我通过简单地继承PHP5的内置PDO类获得了成功。您可以添加一些基本的基准测试信息和查询计数,并将query()
或execute()
调用传递给父类。
答案 3 :(得分:2)
为了避免全局变量,在db类中:
class db {
public static $query_count = 0;
public static function query($str) {
self::$query_count++;
// your db query method here
}
}
然后只需访问您的静态查询计数:
<?= db::$query_count ?>