php - Bagaimana untuk menyelesaikan tamat masa pautan pernyataan msyql?
为情所困
为情所困 2017-05-16 13:10:50
0
3
739

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!

为情所困
为情所困

membalas semua(3)
某草草

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:

    if (!mysql_ping ($conn)) {
       mysql_close($conn);
       $conn = mysql_connect('localhost','user','pass');
       mysql_select_db('db',$conn);
    }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan