coder思维

科学尚未普及

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
set_time_limit(0);
ini_set('memory_limit', '500M');

$pdo = new PDO('mysql:host=192.168.100.37;port=3306;dbname=crm', 'root', '');
/**
 * 不使用缓冲查询。 !重要,如果不设置,php执行到$st->fetch,mysql会一次性把数据塞给php,然后再逐条读取
 * 如果数据量很大,浏览器会等待很久才弹出保存文件窗口
 */
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
$st = $pdo->prepare('SELECT * FROM `game_top_crm_v2` limit 1000000');
$st->execute();
//设置好告诉浏览器要下载csv文件的headers
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=1.csv');
header('Cache-Control: max-age=0');
header('Pragma: public');

$fp = fopen('php://output', 'a'); //php: — 访问各个输入/输出流(I/O streams)

while ($data = $st->fetch(PDO::FETCH_ASSOC)) {
    fputcsv($fp, $data);
    unset($data);
}

$pdo = null;
fclose($fp);
posted on 2021-04-13 19:34  浩琪  阅读(51)  评论(0)    收藏  举报