在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/PHP/ swoole異步mysql獲取大數(shù)據(jù)時直接退出沒返回數(shù)據(jù)

swoole異步mysql獲取大數(shù)據(jù)時直接退出沒返回數(shù)據(jù)

  • 最簡單地使用swoole的異步mysql客戶端獲取10萬數(shù)據(jù),在一個環(huán)境下的php7下花費(fèi)一段長時間后能執(zhí)行query的回調(diào)方法輸出數(shù)據(jù),但是在另外一個環(huán)境的php5.4下卻什么報錯都沒有直接退出了,沒有執(zhí)行到query的回調(diào)的函數(shù)。

我猜測是PHP的配置不同影響的,1萬數(shù)據(jù)是沒問題,但是不知道應(yīng)該怎么修改配置

$db->connect($server, function ($db, $r) {
    $dbPreix = "m_";
    if ($r === false) {
        var_dump($db->connect_errno, $db->connect_error);
        die;
    }
    //獲取隊列數(shù)據(jù)
    $sql = 'SELECT queue_id,group_id,content,data,keyword FROM '.$dbPreix.'_queue '.
            'WHERE 1=1 limit 100000';
    $db->query($sql, function(swoole_mysql $db, $r) {
        print_r($r);
    });
回答
編輯回答
氕氘氚

你這應(yīng)該是內(nèi)存溢出導(dǎo)致的。內(nèi)存溢出的配置是php.ini,可能配置不一樣導(dǎo)致。

解決方法:不要一次性查詢,分批次查詢在回調(diào)(做法參考分頁原理)

2018年4月27日 04:11
編輯回答
枕頭人

解決方法:減少查詢數(shù)據(jù)量或加大php運(yùn)行內(nèi)存。

在php.ini中,找到"memory_limit"這一項,如果沒有,你可以在文件的尾部自己增加這個參數(shù)。

memory_limit = 128M ; #可以將128M改為任何你想設(shè)置的值

也可以直接在代碼里面改

ini_set('memory_limit', '128M');
2017年9月26日 23:44