如何使用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 PROCESSLISTSQL查询的方式获取进程列表,这是mysqli里的标准做法。 - 优化错误处理:连接失败后添加
exit语句,防止后续代码在没有有效连接的情况下继续执行,避免不必要的错误。 - 资源清理:添加了
mysqli_close($conn)显式关闭数据库连接,同时保留了结果集的释放操作,养成良好的资源管理习惯。 - 保留原业务逻辑:继续保留
count($mysql_data)-1的计算,这应该是你用来排除当前执行统计的这个连接的逻辑,如果不需要可以直接去掉减1。
内容的提问来源于stack exchange,提问作者gr68
相关产品推荐
相关产品推荐

