1

可能重复:
MySQL 服务器已消失 - 恰好在 60 秒内

我们在 PHP 中使用 mysql_connect 方法为守护进程创建数据库句柄。问题是,该连接的使用时间可能不超过 8 小时(有时超过几周。)

我们遇到了 MySQL 将结束会话的问题,因为达到了 wait_timeout。 http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

我们不想为所有连接增加这个值。有没有办法仅通过 PHP 增加该句柄的超时时间?通过 MySQL?

4

2 回答 2

1

长时间挂在数据库连接上是不好的,因为数据库在任何时候只提供固定数量的连接;如果您使用了很长时间,这意味着您的数据库处理其他请求的能力较小,即使您实际上并没有对该连接做任何事情。

如果程序暂时使用完它,我建议断开连接,并在需要做更多数据库工作时重新连接。

此外,此解决方案将保护您的程序免受可能的数据库停机,即如果您需要重新启动数据库服务器(即使在支持最好的网络中也会发生这种情况)。如果您保持连接处于活动状态(即根据其他答案进行数据库 ping),那么这样的事件将使您遇到与现在完全相同的问题。使用在不需要时断开的适当管理的连接,即使您已计划在数据库上停机,您也可以安全地保持守护程序运行;只要它在一段时间内保持空闲状态,它就不会变得更聪明。

(顺便说一句,我也质疑编写一个连续运行的 PHP 程序的智慧;PHP 是为短期 Web 请求而设计的。它可能能够运行长期的守护程序,但有更好的工具来完成这项工作)

于 2013-01-17T14:41:35.457 回答
0

对于这个问题,最好的方法是使用 mysql_ping();

在手动 PHP mysql_ping()上查看

于 2013-01-17T14:34:11.967 回答