cakephp 3.1 mysql已经消失了

时间:2016-04-27 20:00:18

标签: mysql cakephp cakephp-3.x cakephp-3.1

我有一个在循环中连续运行的Shell脚本。

它会检查数据库中的记录,并在需要时对其进行更改。

     }catch (\Exception $e){
                    if(!mysql_ping()){//tried 
    $this->connection->reconnect();  //also tried
$this->Company->getDatasource()->reconnect();   neither seem to work.
                    }}

我遇到的问题是这个脚本似乎运行正常,但随后会抛出: '2006 MySQL服务器已经消失' 我试图在异常catch中放入一些东西来重新连接到mysql服务器,例如:

CROSS JOIN

有关如何重新连接数据库的任何建议吗?

1 个答案:

答案 0 :(得分:1)

我有一个类似的问题,即Shell在无限循环中运行。

添加ConnectionManager的用途:

use Cake\Datasource\ConnectionManager;

在循环之前获取连接:

$connection = ConnectionManager::get('default');

在循环中,在您首次需要连接之前不久,检查您是否仍然连接并在断开连接时进行连接:

if(!$connection->isConnected()) {
    $connection->connect();
}

如果您的Shell处于等待较长时间的状态,您可以尝试手动断开连接,并在需要再次连接时进行新连接:

if($connection->isConnected()) {
    $connection->disconnect();
}