zoukankan      html  css  js  c++  java
  • php数据库两个关联大表的大数组分页处理,防止内存溢出

            $ret = self::$db->select($tables, $fields, $where, $bind);
    
            if (!empty($ret)) {
                $retIds = array();
                $ids = array();
                while (!empty($ret)) {
                    $_sub = array_splice($ret, 0, 10000); //每次取出10000个
                    foreach ($_sub as $v) {
                        array_push($retIds, $v['pt_AccountKey']);
                    }
                    unset($_sub);
                    /*过滤非快速登陆类型*/
                    $place_holders = implode(',', array_fill(0, count($retIds), '?'));
                    array_unshift($retIds, 'autoregs');
                    $PT_Account = self::$db->select('PT_Account', 'pt_AccountKey', 'pt_RegisteSource=? AND pt_AccountKey IN (' . $place_holders . ')', $retIds);
                    if (!empty($PT_Account)) {
                        array_push($ids, $v['pt_AccountKey']);
                    }
    
                }
                unset($ret);
    
                if (!empty($ids)) {
                    $num = count($ids);
                    $_sub = array_splice($ids, $get['start'], $get['limit']);
                    $place_holders = implode(',', array_fill(0, count($_sub), '?'));
                    $where = 'pt_AccountKey IN (' . $place_holders . ')';
                    $list = self::$db->select('PT_Account', 'pt_AccountID,pt_Password', $where, $_sub);
                    $grid = array();
                    $grid['rows'] = $list;
                    $grid['total'] = $num;
                    return $grid;
                }
            }
    

      

    暗夜之中,才见繁星;危机之下,暗藏转机;事在人为,为者常成。
  • 相关阅读:
    How to solve problems
    【Python】区分List 和String
    【Python】内置方法pop
    【Python】安装配置Anaconda
    【Web crawler】print_all_links
    【Python】多重赋值之值互换
    BNF巴科斯-诺尔范式
    Svn与Git的区别
    python项目部署
    linux每日命令(3):which命令
  • 原文地址:https://www.cnblogs.com/zenghansen/p/4228868.html
Copyright © 2011-2022 走看看