[a
workerman+tp5的错误问题怎么解决?thinkphp5+workerman 报错问题 在thinkphp5.0.X版本早期会遇到长时间开启workerman服务会报错,在thinkphp5.0.24版本已经修复。原因是因为长时间链接数据库,导致数据库断线。 推荐:《Workerman教程》 解决的方案: 1、修改数据库配置database.php文件,将break_reconnect参数设置为true。断线重连。 1 2 | break_reconnect => true,
|
2、修改 /library/think/db/Connection.php中的isBreak函数,替换为以下最新的isBreak函数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
protected function isBreak( $e )
{
if (! $this ->config[ break_reconnect ]) {
return false;
}
$info = [
server has gone away ,
no connection to the server ,
Lost connection ,
is dead or not enabled ,
Error while sending ,
decryption failed or bad record mac ,
server closed the connection unexpectedly ,
SSL connection has been closed unexpectedly ,
Error writing data to the connection ,
Resource deadlock avoided ,
failed with errno ,
];
$error = $e ->getMessage();
foreach ( $info as $msg ) {
if (false !== stripos ( $error , $msg )) {
return true;
}
}
return false;
}
|
3、将/library/think/db/connector/Mysql.php中的isBreak函数删除或者注释掉。 修改完后,workerman长时间链接数据库,数据库断开会重连。
|