我有一个在循环中连续运行的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
有关如何重新连接数据库的任何建议吗?
答案 0 :(得分:1)
我有一个类似的问题,即Shell在无限循环中运行。
添加ConnectionManager的用途:
use Cake\Datasource\ConnectionManager;
在循环之前获取连接:
$connection = ConnectionManager::get('default');
在循环中,在您首次需要连接之前不久,检查您是否仍然连接并在断开连接时进行连接:
if(!$connection->isConnected()) {
$connection->connect();
}
如果您的Shell处于等待较长时间的状态,您可以尝试手动断开连接,并在需要再次连接时进行新连接:
if($connection->isConnected()) {
$connection->disconnect();
}