php - 如何解决msyql语句链接超时?
为情所困
为情所困 2017-05-16 13:10:50
0
3
694

我用thinkphp框架
在命令行模式下
写了一个死循环
我要保证我的逻辑操作
永远不会中断
而且每秒执行一次
代码如下

public function 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');
        }
        
        //////////逻辑操作///////////           
        try {
            $result1 = $abb->add(array('a' => 'abc'));//操作数据库
        }  catch (\Exception  $e) {
          error_log('/tmp/2.log', $e->getMessage());
        }
        try {
            $result2 = $redis -> Lpush('abc',$result1);//操作redis
        }  catch (\Exception  $e) {
          error_log('/tmp/3.log', $e->getMessage());
        }
        //////////逻辑操作///////////
        sleep(1);
    }
}

但是有一个问题 我这个链接数据库时间过长会MySQL会自动断掉
2006:MySQL server has gone away
wait_timeout默认是8小时,
去增加wait_timeout 也不是长久之计,
所以我想执行1000次时重新M('abb') ,但好像还是不行,重新M('abb')不是重新练=链接数据库吗?

有没有其他解决方案?
如何保证我的链接数据库不会中断?
redis操作有链接超时的问题吗?
求指导!

为情所困
为情所困

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!