MySQL&PHP - 中止与数据库的连接:(读取通信数据包时出错)

MySQL&PHP - 中止与数据库的连接:(读取通信数据包时出错)

PHP 版本 5.6

我有一个 PHP 程序(在 中运行CodeIgniter 'CI_VERSION', '2.1.3')循环处理 100 个项目。

Apache(通过 Codeigniter)会给我500错误并且日志中没有任何迹象表明实际发生了什么。

只有 mySQL/var/log/mysql/error.log has这一行:

[Note] Aborted connection 899 to db: 'dbname' user: 'username' host: 'localhost' (Got an error reading communication packets)

/var/lib/mysql/ns1.log 的最后几行 - 它不包含任何错误

2019-07-26T02:08:10.254327Z   581 Connect   username@localhost on dbname using Socket
2019-07-26T02:08:10.254499Z   581 Init DB   dbname
2019-07-26T02:08:10.254607Z   581 Query SET NAMES utf8
2019-07-26T02:08:10.255229Z   581 Query SHOW TABLES FROM `dbname`
2019-07-26T02:08:10.257569Z   581 Query SELECT `value`
FROM (`multiscraper_settings`)
WHERE `key` =  'ts'
2019-07-26T02:08:10.257962Z   581 Query SELECT `value`
FROM (`multiscraper_settings`)
WHERE `key` =  'au'
2019-07-26T02:08:10.258304Z   581 Query SELECT `value`
FROM (`multiscraper_settings`)
WHERE `key` =  'au'
2019-07-26T02:08:10.261331Z   581 Quit  

我确信没有 SQL 查询错误,因为如果有的话,我已经启用了所有日志记录,并且我会在日志中看到它(正如我在发生此类错误时所看到的那样)。

当我批量运行 25 个项目的程序时,所有 100 个项目均成功完成,没有出现 500 个错误。我怀疑这里有些变量已经达到上限。这不是最大 PHP 脚本运行时间,因为我将其更改为无限制。

您认为是什么原因造成的?

答案1

经过几天的研究,我决定将 PHP 版本从 5.6 更改为 7.2,它似乎能够毫无问题地处理所有 100 个项目。

实际上我不知道发生这种情况的原因,但这可能只是 PHP 5.6 中的一个错误,已在 7.2 中修复。

更新:是的,现在看起来很强大!

更新 2:经过几十次测试,我注意到它仍然会发生,但不那么频繁。例如刚才71次迭代后失败了。它确实更加稳健,因为之前它的迭代次数不超过 35 次。

相关内容