コマンド ライン モードで 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 操作でリンク タイムアウトの問題はありますか?
指導を求めてください!
毎回データベースに再接続することをお勧めします。エラーはリンクの喪失が原因である可能性があります。
データベース関連のc3p0のパラメータ値をデータベースのwait_timeoutと大きく乖離しないように調整します
mysql_ping 関数を使用して、接続されているかどうかを確認するだけです:
リーリー