mysqli_query 报 mysql 连接断开的处理方法
在使用 php 脚本连接 mysql 服务器时,可能会遇到 mysqli_query(): send of xx bytes failed with errno=32 broken pipe 的错误。其中,xx 代表发送的字节数。尽管尝试增大 max_allowed_packet 参数,但问题仍然存在。
错误原因
此错误通常表明 php 脚本与 mysql 服务器之间的连接在一段时间不活动后被服务器关闭。当脚本尝试通过这个已关闭的连接执行查询时,就会触发错误。
解决方法
立即学习“PHP免费学习笔记(深入)”;
为了解决此问题,可以采取以下步骤:
- 调整 mysql 服务器的 wait_timeout 参数:此参数指定非交互式连接在不活动后被关闭所需的时间。将其设置为较大值,如:
set wait_timeout = 3600;
登录后复制
- 检查连接是否断开:在执行查询之前,检查连接是否仍然活动,并重新连接已关闭的连接:
if (!mysqli_ping($conn)) { // 断开连接 mysqli_close($conn); // 重新连接 $conn = mysqli_connect($host, $user, $password, $database); }
登录后复制
通过进行这些调整,可以防止 broken pipe 错误的发生,确保 php 脚本与 mysql 服务器之间的稳定连接。