Maison >cadre php >Workerman >Comment résoudre le problème d'erreur de workerman+tp5

Comment résoudre le problème d'erreur de workerman+tp5

藏色散人
藏色散人original
2020-02-04 14:03:013333parcourir

Comment résoudre le problème d'erreur de workerman+tp5

Comment résoudre le problème d'erreur de workererman+tp5 ? Problème de rapport d'erreurs thinkphp5+workerman

Dans la première version de thinkphp5.0. La raison en est que la base de données est déconnectée en raison d'une connexion à long terme à la base de données.

Recommandé : "Tutoriel Workerman"

Solution :

1. Modifier la base de données Configurer. le fichier database.php et définissez le paramètre break_reconnect sur true. Déconnectez et reconnectez.

// 是否需要断线重连
'break_reconnect' => true,

2. Modifiez la fonction isBreak dans /library/think/db/Connection.php et remplacez-la par la dernière fonction isBreak ci-dessous.

  /**
     * 是否断线
     * @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. Supprimez ou commentez la fonction isBreak dans /library/think/db/connector/Mysql.php.

Après modification, workerman sera connecté à la base de données pendant une longue période. Si la base de données est déconnectée, elle sera reconnectée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn