Saya menggunakan rangka kerja thinkphp
dalam mod baris arahan
untuk menulis gelung tak terhingga
Saya ingin memastikan bahawa operasi logik saya
tidak pernah diganggu
dan dilaksanakan sekali sesaat
>Kodnya adalah seperti berikut
indeks fungsi awam()
{
$redis = new \Redis\Redis();//Segera redis
$redis_res = $redis ->
jika ($redis_res !== 'PONG') {
error_log('/tmp/1.log', $e->getMessage());
}
$abb = M('abb');//instantiation
$i = 0;
manakala(benar) {
//Digunakan untuk mengendalikan tamat masa pangkalan data sambungan Kaedah 1
$i++;
jika ($i >= 1000) {
$i = 0;
$abb = M('abb');
}
//////////Operasi logik////////////
cuba {
$result1 = $abb->add(array('a' => 'abc'));//Pangkalan data operasi
} tangkapan (\Pengecualian $e) {
error_log('/tmp/2.log', $e->getMessage());
}
cuba {
$result2 = $redis -> Lpush('abc',$result1);//Operasi redis
} tangkapan (\Pengecualian $e) {
error_log('/tmp/3.log', $e->getMessage());
}
//////////Operasi logik////////////
tidur(1);
}
}
Tetapi terdapat masalah MySQL akan terputus secara automatik jika masa sambungan ke pangkalan data terlalu lama
2006: Pelayan MySQL telah hilang
Waktu tunggu_masa lalai ialah 8 jam,
meningkatkan tunggu_masa tamat tidak penyelesaian jangka panjang -latihan = memaut ke pangkalan data?
Adakah terdapat sebarang penyelesaian lain?
Bagaimanakah saya boleh memastikan bahawa pangkalan data terpaut saya tidak akan terganggu?
Adakah terdapat sebarang masalah tamat masa pautan dalam operasi redis?
Minta tunjuk ajar!
Adalah yang terbaik untuk menyambung semula ke pangkalan data setiap kali. Ralat anda mungkin disebabkan oleh pautan yang hilang.
Laraskan nilai parameter c3p0 yang berkaitan dengan pangkalan data supaya ia tidak boleh terlalu berbeza daripada pangkalan data wait_timeout
Hanya gunakan fungsi mysql_ping untuk menentukan sama ada ia disambungkan: