検索

ホームページ  >  に質問  >  本文

php - msyql ステートメントのリンク タイムアウトを解決するにはどうすればよいですか?

コマンド ライン モードで 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 操作でリンク タイムアウトの問題はありますか?
指導を求めてください!

为情所困为情所困2869日前806

全員に返信(3)返信します

  • 某草草

    某草草2017-05-16 13:12:50

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

    返事
    0
  • 怪我咯

    怪我咯2017-05-16 13:12:50

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

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:12:50

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

    リーリー

    返事
    0
  • キャンセル返事