【发布时间】:2018-02-13 15:08:49
【问题描述】:
我使用 CLI 中的 PHP 脚本下载远程 MySQL 数据库 (gzip) 并将它们直接提取到我的 MacBook 的 MySQL 5.7(不是 MAMP)服务器。 它工作正常,但作为副作用,我的 PHP 应用程序(MAMP Pro)在 CLI 脚本中间丢失了 MySQL 连接并出现警告
PHP Warning: mysqli::__construct(): MySQL server has gone away in ...
这发生在大约十几个数据库之后(无法重现确切的数量)。当 CLI 脚本运行时,系统偏好设置中的 MySQL 窗格会在每次 CLI 转储后从绿色/运行变为红色/停止再变为绿色/运行,这首先与浏览器中的 PHP 应用程序不冲突。但在某些时候,PHP 应用程序显然会失去连接。
我玩弄了 my.cnf 并设置了
[mysqld]
max_allowed_packet=128M
max_connections=1024
或其他数量,但似乎没有任何改变。
当我在 CLI 脚本完成后在系统偏好设置中手动停止和启动 MySQL 时,PHP 再次继续正常工作。
有什么想法吗?
编辑:
到目前为止,谢谢,但仍未解决。所以这是主要的脚本:
$tmpPath = '/tmp/'
For each of 30 databases with different size:
$dbName = database name
exec('ssh user@server.com "mysqldump --login-path=local --lock-tables=false '.$dbName.' | gzip" > '.$tmpPath.$dbName.'.sql.gz');
exec('gzip -q -dc '.$tmpPath.$dbName.'.sql.gz | mysql -u root -proot '.$dbName)
就像我说的,终端中的 PHP CLI 脚本 一点也不抱怨! 由于上述错误,我的 PHP 应用程序(Angular 前端应用程序的后端)在 30 个转储中间的某处停止工作。
【问题讨论】:
-
SHOW GLOBAL VARIABLES LIKE '%timeout%';和SHOW SESSION VARIABLES LIKE '%timeout%'; -
同时我发现系统偏好设置中的 MySQL 变红了,所以在每次数据库转储后停止半秒,然后立即重新启动。
-
@RickJames 你能给我另一个提示你的评论是什么意思吗?我玩过可变超时设置,但没有帮助。
-
尝试偶尔使用 mysqli_ping() ping mysql 服务器
-
@rndus2r 我一直在运行 PHP MySQL 脚本,直到连接丢失并且脚本失败。所以无论如何都要检查与 MySQL 服务器的连接。
标签: php mysql macos mysqli dump