swoole异步mysql获取大数据时直接退出没返回数据

  • 最简单地使用swoole的异步mysql客户端获取10万数据,在一个环境下的php7下花费一段长时间后能执行query的回调方法输出数据,但是在另外一个环境的php5.4下却什么报错都没有直接退出了,没有执行到query的回调的函数。

我猜测是PHP的配置不同影响的,1万数据是没问题,但是不知道应该怎么修改配置

$db->connect($server, function ($db, $r) {
    $dbPreix = "m_";
    if ($r === false) {
        var_dump($db->connect_errno, $db->connect_error);
        die;
    }
    //获取队列数据
    $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);
    });
阅读 2.5k
2 个回答

你这应该是内存溢出导致的。内存溢出的配置是php.ini,可能配置不一样导致。

解决方法:不要一次性查询,分批次查询在回调(做法参考分页原理)

解决方法:减少查询数据量或加大php运行内存。

在php.ini中,找到"memory_limit"这一项,如果没有,你可以在文件的尾部自己增加这个参数。

memory_limit = 128M ; #可以将128M改为任何你想设置的值

也可以直接在代码里面改

ini_set('memory_limit', '128M');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题