Heim  >  Artikel  >  PHP-Framework  >  Was tun, wenn Workerman einen Datenbankfehler auslöst?

Was tun, wenn Workerman einen Datenbankfehler auslöst?

尚
Original
2019-12-23 10:47:372570Durchsuche

Was tun, wenn Workerman einen Datenbankfehler auslöst?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn