php - 如何解決msyql語句連結逾時?
为情所困
为情所困 2017-05-16 13:10:50
0
3
692

我用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操作有連結逾時的問題嗎?
求指導!

为情所困
为情所困

全部回覆(3)
某草草

最好每次都重連資料庫。你這個應該是由於連結丟失所引起的錯誤。

刘奇

調整c3p0跟資料庫相關的參數值,跟資料庫wait_timeout相差不能太大

淡淡烟草味

用mysql_ping函數判斷是否連接就好:

    if (!mysql_ping ($conn)) {
       mysql_close($conn);
       $conn = mysql_connect('localhost','user','pass');
       mysql_select_db('db',$conn);
    }
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!