Um eine effizientere Serverzugriffsgeschwindigkeit zu erreichen, verwenden wir lange Verbindungen von MySQL oder anderen Datenbanken, um die Zugriffsgeschwindigkeit zu verbessern.
Der folgende Inhalt verwendet MySQL PDO als ein Beispiel:
Problem:
Wenn sich die CLI im Speicher befindet, gibt es viele Situationen, die dazu führen, dass die erstellte Verbindung fehlschlägt
Lösung:
Beim Zugriff auf die Datenbank Beim Hinzufügen von Try Catch Capture
Wenn der erfasste Fehler 2006 oder 2013 ist, bedeutet dies, dass die Verbindung zu diesem Zeitpunkt fehlgeschlagen ist, um den normalen Betrieb des Programms sicherzustellen.
// 在和数据库交互的地方加上try catchpublic function Init($query) { try{ // todo 这里是操作数据库的逻辑 }catch (\Exception $e) { if ( $e->errorInfo[1] === 2006 || $e->errorInfo[1] === 2013 ) { // todo 下面填写 或者调用连接数据库的代码 $dsn = 'mysql:dbname=' . $this->settings["dbname"] . ';host=' . $this->settings["host"] . ''; $this->pdo = new \PDO($dsn, $this->settings["user"], $this->settings["password"], array(\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8;")); $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $this->pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true); return true; } } }
var_dump($e-> ;errorInfo); Der Wert von
array(3) { [0]=> string(5) "HY000" [1]=> int(2006) [2]=> string(26) "MySQL server has gone away"}
Weitere Workerman-Kenntnisse finden Sie in der Spalte Workerman-Tutorial im PHP-Chinesisch Webseite.
Das obige ist der detaillierte Inhalt vonWas tun, wenn Workerman einen Datenbankfehler auslöst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!