Laravel - 如何检查(SSH)套接字是否活着?

时间:2016-08-30 14:10:25

标签: php laravel ssh laravel-5.2

我有一个带MySQL的远程服务器。在另一台服务器上,我需要连接到远程MySQL(通过Laravel 5.2)。

目前在服务器(Ubuntu 14.04)中我手动连接命令:

ssh -N -L 13306:127.0.0.1:3306 -pXXX *****@serverName.com

这很好用,但大约一个小时后连接丢失了。

如何在Laravel(v5.2)中检查连接是否存活,如果没有自动连接?

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。