我有一个带MySQL的远程服务器。在另一台服务器上,我需要连接到远程MySQL(通过Laravel 5.2)。
目前在服务器(Ubuntu 14.04)中我手动连接命令:
ssh -N -L 13306:127.0.0.1:3306 -pXXX *****@serverName.com
这很好用,但大约一个小时后连接丢失了。
如何在Laravel(v5.2)中检查连接是否存活,如果没有自动连接?
答案 0 :(得分:0)
如果' mysql消失了,你可以尝试捕获PDOException。或者“失去联系”#39;并重新连接到服务器。代码可能如下所示:
try {
\DB::select("SELECT version()");
} catch(\PDOException $e) {
if (in_array($e->getCode(), [2002, 2013, 2006])) {
\DB::reconnect();
}
}
很可能你必须在Laravel \ DB :: select,update,insert上编写自己的包装器,以便在一个地方重新连接。
答案 1 :(得分:0)
解决方案:
1)使用标准PHP命令" system" (http://php.net/manual/en/function.system.php)带有呼叫检查ssh端口(通过ssh / telent命令)。不确定此方法是否允许直接重启服务。
2)使用异步方法:使用console(bash / php)脚本来检查ssh端口,以及什么时候不允许使用" ssh"在一些数据库表中设置标志,然后你可以在PHP代码中检查这个字段,如果需要,你可以设置一些其他数据库标志,如"重新启动ssh"并使用Linux Cron定期检查数据库中的此标志,如果找到该标志,则重新启动ssh。