Php + mysql - 连接在查询输入 66,946 个字符后持续终止

Php + mysql - connection dies consistantly after 66,946 chars of query input

我一直在尝试调试 php 项目中随机掉线的 mysql 连接。

到目前为止我发现的事情:

我已经将范围缩小到这个最小的复制案例:

<?php
if ( ! empty($argv[1])) {
    $count = intval($argv[1]);
}
if (empty($count) || $count < 34) {
    $count = 34;
}

$longText         = str_repeat("a", $count - 34);
$query            = "select * from abcdef limit 1/* {$longText} */"; // where "abcdef" is my table name
$mysqliConnection = mysqli_connect("my_host", "my_username", "my_password", "my_database");
echo "query length: " . strlen($query);
$result = mysqli_query($mysqliConnection, $query);
echo "\n\nSuccess!\n\n";

提供参数 66946 returns“成功!”立即,66947 只会让生产服务器无限期挂起(但在我的本地机器上工作正常!)。

为什么我的 php mysql 连接有一些神秘的输入限制?我怎样才能阻止它(无论“它”是什么)限制我的 php mysql 连接输入长度?

您可能正在寻找 max_allowed_packet。它在 my.cnf.

中定义

使用SHOW VARIABLES LIKE 'max_allowed_packet';检查一下。

事实证明服务器的路由 table 存在错误配置。修复路由 table 解决了问题。

花了好几个小时才得出这个结论,一切都指向 php fpm 或 mysql 设置配置错误,我什至不认为这可能是路由问题。希望这对以后的人有所帮助。