Wie kann das Fehlerproblem von workererman+tp5 gelöst werden? thinkphp5+workerman Fehlermeldeproblem
In der frühen Version von thinkphp5.0. Der Grund dafür ist, dass die Datenbank aufgrund einer langfristigen Verbindung zur Datenbank getrennt wird.
Empfohlen: „Workerman Tutorial“
Lösung:
1. Ändern Sie die Datenbank Öffnen Sie die Datei „database.php“ und setzen Sie den Parameter „break_reconnect“ auf „true“. Trennen und erneut verbinden.
// 是否需要断线重连 'break_reconnect' => true,
2. Ändern Sie die isBreak-Funktion in /library/think/db/Connection.php und ersetzen Sie sie durch die neueste isBreak-Funktion unten.
/** * 是否断线 * @access protected * @param \PDOException|\Exception $e 异常对象 * @return bool */ 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. Löschen oder kommentieren Sie die isBreak-Funktion in /library/think/db/connector/Mysql.php.
Nach der Änderung istworkermanfür längere Zeit mit der Datenbank verbunden. Wenn die Datenbank getrennt wird, wird sie erneut verbunden.
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Fehlerproblem von workerman+tp5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!