You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP统计MySQL连接数?适配mysqli替代废弃的mysql_connect

没问题,我帮你把这段代码适配成mysqli扩展的版本,同时修正原代码里的一些小问题,让它符合PHP新版本的规范:

适配后的mysqli版本代码
<?php
$conn = mysqli_connect("localhost", $mysql_user, $mysql_pwd);

// 检查连接是否成功
if (mysqli_connect_errno()) {
    echo "NO CONNECTION";
    exit; // 连接失败后直接终止,避免后续无效操作
}

// 执行SHOW PROCESSLIST获取所有数据库进程,替代原mysql_list_processes
$result = mysqli_query($conn, "SHOW PROCESSLIST");

$mysql_data = [];
// 遍历结果集,收集每个进程关联的数据库名
while ($row = mysqli_fetch_assoc($result)) {
    $mysql_data[] = $row["db"];
}

// 释放结果集资源
mysqli_free_result($result);
// 显式关闭数据库连接
mysqli_close($conn);

// 原逻辑:排除当前统计连接本身,计算其他连接数
$n_connections = count($mysql_data) - 1;
echo $n_connections;
?>
关键改动说明
  • 统一使用mysqli函数:把原代码里的mysql_connect替换为mysqli_connect,同时全程使用mysqli系列函数(比如mysqli_query、mysqli_fetch_assoc),避免原代码里混用mysql和mysqli函数的错误(原代码中用了mysqli_connect_errno()但连接用的是mysql_connect,这是无效的)。
  • 替换mysql_list_processes:mysqli扩展没有直接对应的mysqli_list_processes函数,改用执行SHOW PROCESSLIST SQL查询的方式获取进程列表,这是mysqli里的标准做法。
  • 优化错误处理:连接失败后添加exit语句,防止后续代码在没有有效连接的情况下继续执行,避免不必要的错误。
  • 资源清理:添加了mysqli_close($conn)显式关闭数据库连接,同时保留了结果集的释放操作,养成良好的资源管理习惯。
  • 保留原业务逻辑:继续保留count($mysql_data)-1的计算,这应该是你用来排除当前执行统计的这个连接的逻辑,如果不需要可以直接去掉减1。

内容的提问来源于stack exchange,提问作者gr68

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:00:44