解决大数据导出CSV,消耗内存过大问题

这篇博客介绍了一个解决大数据导出为CSV文件时内存消耗过大的问题。通过设置PHP的超时时间和内存限制,以及使用分页查询和逐条写入CSV的方式来减少内存占用。文章详细展示了如何编写代码实现这个过程。
摘要由CSDN通过智能技术生成

                                                                    解决大数据导出CSV,消耗内存过大问题
public function Export() {
        set_time_limit(0);
        ini_set('memory_limit', '2048M');
        $db = Common_Common::getAdapter ();
               $filename = date('ymdHis');
               ob_end_clean();//清除缓冲区,避免乱码
              header ( "Content-type:application/vnd.ms-excel" );
              header("Content-Disposition: attachment; filename=\"" . $filename . ".csv\"");
              // 打开PHP文件句柄,php://output 表示直接输出到浏览器
              $fp = fopen('php://output', 'a');
              $params = $this->_request->getParams();
        //基础数据
              $sql = "SELECT 
                    TYPE
                FROM 
                    receiving_detail_cost
                    LEFT JOIN receiving ON receiving.receiving_id=receiving_detail_cost.receiving_id
                    LEFT JOIN product ON product.product_id=receiving_detail_cost.product_id
                WHERE 1";
      //统计查询导出数据数量
        $countSql = Process_HistoryDataSplit::sqlFormat(str_replace('TYPE', 'count(*)', $sql), 'warehouse_cost');
        $count = $db->fetchOne($countSql);
        
        if(empty($count)){
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值