php - msyql ステートメントのリンク タイムアウトを解決するにはどうすればよいですか?
为情所困
为情所困 2017-05-16 13:10:50
0
3
778

コマンド ライン モードで thinkphp フレームワークを使用しました

無限ループを作成しました
論理演算が
決して中断されず
1 秒に 1 回実行されるようにしたい
> >コードは次のとおりです

パブリック関数index()
{
    $redis = new \Redis\Redis();//redis をインスタンス化する
    $redis_res = $redis -> ping();
    if ($redis_res !== 'PONG') {
        error_log('/tmp/1.log', $e->getMessage());
    }
    $abb = M('abb');//インスタンス化
    $i = 0;
    while(true) {
        //接続データベースのタイムアウトを処理するために使用されます 方法 1
        $i++;
        if ($i >= 1000) {
            $i = 0;
            $abb = M('abb');
        }
        
        //////////論理演算////////////
        試す {
            $result1 = $abb->add(array('a' =>'abc'));//操作データベース
        } catch (\Exception $e) {
          error_log('/tmp/2.log', $e->getMessage());
        }
        試す {
            $result2 = $redis -> Lpush('abc',$result1);// オペレーション redis
        } catch (\Exception $e) {
          error_log('/tmp/3.log', $e->getMessage());
        }
        //////////論理演算////////////
        スリープ(1);
    }
}

しかし、問題があります。データベースへのリンクに時間がかかりすぎると、MySQL は自動的に切断されます。
2006: MySQL サーバーが停止しました。
wait_timeout のデフォルトは 8 時間です。
wait_timeout を増やすのは長くはなりません。 -term ソリューション。
つまり、1000 回実行するときに re-M('abb') を実行したいのですが、それでも re-M('abb') re-train= が機能しないようです。データベースへのリンク?

他に解決策はありますか?
リンクされたデータベースが中断されないようにするにはどうすればよいですか?
Redis 操作でリンク タイムアウトの問題はありますか?
指導を求めてください!

为情所困
为情所困

全員に返信(3)
某草草

毎回データベースに再接続することをお勧めします。エラーはリンクの喪失が原因である可能性があります。

いいねを押す +0
刘奇

データベース関連のc3p0のパラメータ値をデータベースのwait_timeoutと大きく乖離しないように調整します

いいねを押す +0
淡淡烟草味

mysql_ping 関数を使用して、接続されているかどうかを確認するだけです:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート