ホームページ > PHPフレームワーク > Workerman > workman+tp5のエラー問題の解決方法

workman+tp5のエラー問題の解決方法

藏色散人
リリース: 2021-02-01 12:06:20
オリジナル
3328 人が閲覧しました

workman+tp5のエラー問題の解決方法

#workerman tp5 のエラー問題を解決するにはどうすればよいですか? thinkphp5 ワーカーマンのエラー報告の問題 # thinkphp5.0 の初期バージョン。原因は、データベースへの長時間の接続によりデータベースが切断されたためです。

推奨: 「

Workerman チュートリアル

解決策:

1. データベースを変更するdatabase.php ファイルを開き、break_reconnect パラメータを true に設定します。切断して再接続します。

// 是否需要断线重连
'break_reconnect' => true,
ログイン後にコピー

2. /library/think/db/Connection.php の isBreak 関数を変更し、以下の最新の isBreak 関数に置き換えます。

  /**
     * 是否断线
     * @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. /library/think/db/connector/Mysql.php 内の isBreak 関数を削除またはコメントアウトします。

修正後、

workerman はデータベースに長時間接続されることになりますが、データベースが切断された場合は再接続されます。

以上がworkman+tp5のエラー問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート