cari

Rumah  >  Soal Jawab  >  teks badan

php - Bagaimana untuk menyelesaikan tamat masa pautan pernyataan msyql?

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!

为情所困为情所困2740 hari yang lalu744

membalas semua(3)saya akan balas

  • 某草草

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

    Adalah yang terbaik untuk menyambung semula ke pangkalan data setiap kali. Ralat anda mungkin disebabkan oleh pautan yang hilang.

    balas
    0
  • 怪我咯

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

    Laraskan nilai parameter c3p0 yang berkaitan dengan pangkalan data supaya ia tidak boleh terlalu berbeza daripada pangkalan data wait_timeout

    balas
    0
  • 淡淡烟草味

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

    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);
        }

    balas
    0
  • Batalbalas