高效的php 匯出 xls,csv 的方法

2021-07-31 12:41:54 字數 1107 閱讀 3297

經常會碰到需要從資料庫中匯出資料到excel檔案,用一些開源的類庫,比如phpexcel,確實比較容易實現,但對大量資料的支援很不好,很容易到達php記憶體使用上限。這裡的方法是利用fputcsv寫csv檔案的方法,直接向瀏覽器輸出excel檔案。

<?php

// 輸出excel檔案頭,可把user.csv換成你要的檔名

header('content-disposition: attachment;filename="user.csv"');

header('cache-control: max-age=0');

include

'./mysql.class.php';//mysql 用你自己的操作類就可以

$db = new mysql();

// 從資料庫中獲取資料,為了節省記憶體,不要把資料一次性讀到記憶體,從控制代碼中一行一行讀即可

$sql = 'select id,user_login from wp_users';

$stmt = $db->getall($sql);

// 開啟php檔案控制代碼,php://output 表示直接輸出到瀏覽器

$fp = fopen('php://output', 'a');

// 輸出excel列名資訊

$head = array("id", "姓名");

foreach ($head

as$i => $v)

// 將資料通過fputcsv寫到檔案控制代碼

fputcsv($fp, $head);

// 計數器

$cnt = 0;

// 每隔$limit行,重新整理一下輸出buffer,不要太大,也不要太小

$limit = 100000;

// 逐行取出資料,不浪費記憶體

$count = count($stmt);

for($t=0;$t

<$count;$t++)

$row = $stmt[$t];

foreach ($row

as$i => $v)

fputcsv($fp, $row);

}

高效php的寫法

1.單引號代替雙引號來包含字串 2.銷毀變數去釋放記憶體,特別是大的陣列 陣列和物件在php特別佔記憶體的,這個由於php的底層的zend引擎引起的,一般來說,php陣列的記憶體利用率只有 1 10,也就是說,乙個在c語言裡面100m 記憶體的陣列,在php裡面就要1g。特別是在php作為後台伺服器...

利用多執行緒實現報表的高效匯出

多執行緒 執行緒池 並發包每當談起這些詞彙,可能不是在面試就是在準備面試的路上了。有句話叫 面試造航母,工作擰螺絲 確實很多情況下我們是用不到這些東西的,但是學好這些東西對我們的日常工作也可能會產生意想不到的好處的。臨近年末,收拾了下手頭工作,趁著最後兩天有些閒暇,準備著手優化下前段時間業務人員反饋...

PHP分割WordPress匯出的XML檔案

定義生成的xml的大小 private const xml size 500 1000 定義需要分割的xml檔案 private const xml source dir root run media.xml 定義輸出檔案的字首 private const xml target dir root r...