zoukankan      html  css  js  c++  java
  • php导出excel不断刷新缓冲区的思路(转)

    require('./db.class.php');
    $DB = new db();
    $DB->connect();//数据库链接

    header("Content-Type: text/csv");
    header("Content-Disposition:filename=php100.csv");
    $sql = "select order_sn,consignee,address,tel,mobile,email,order_amount,add_time from order_info";//查询数据
    $order = $DB->fetch_all($sql);

    // 打开PHP文件句柄,php://output 表示直接输出到浏览器
    $fp = fopen('php://output', 'a');
    // 输出Excel列名信息

    foreach($order[0] as $key=>$value){
    $head[] = iconv('utf-8', 'gbk', $key);//头信息
    }

    // 将数据通过fputcsv写到文件句柄
    //fputcsv($fp, $head);

    // 计数器
    $cnt = 0;
    // 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
    $limit = 100000;

    // 逐行取出数据,不浪费内存
    $count = count($order);

    for($t=0;$t<$count;$t++) {

    $cnt ++;
    if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
    ob_flush();
    flush();
    $cnt = 0;
    }
    foreach ($order[$t] as $i => $v) {
    if($i == 'add_time') {
    $row[$i] = iconv('utf-8', 'gbk', date('Y-m-d H:i:s',$v));
    }else{
    $row[$i] = iconv('utf-8', 'gbk', $v);
    }
    }
    fputcsv($fp, $row);
    unset($row);
    }

  • 相关阅读:
    (0)git安装
    [SCOI2008]奖励关
    bzoj1007 [HNOI2008]水平可见直线
    【bzoj1060】[ZJOI2007]时态同步
    【bzoj2705】[SDOI2012]Longge的问题
    【bzoj3505】[Cqoi2014]数三角形
    【bzoj3747】[POI2015]Kinoman
    P1072 Hankson的趣味题
    poj1845 数论 快速幂
    【bzoj1965】[Ahoi2005]SHUFFLE 洗牌
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3232424.html
Copyright © 2011-2022 走看看