一般來說用php匯出上萬條資料的話 沒有好的方法很容易出現超時或者失敗的問題。
今天就說一下我用的方法 :
$commit=db
::connection
('資料庫')-
>
table
('表名')-
>
where
(查詢的條件)
->
get();
$count
=count
($commit);
$filename
='檔名稱.csv'
;set_time_limit(0
);ini_set
('memory_limit'
,'1024m');
//設定記憶體限制
$head=[
'序號'
,'內容1'
,'內容2'
,'內容3'];
//表頭
header
("content-disposition: attachment; filename=\""
.$filename
.".csv\"");
header()
;header
('access-control-allow-origin: *'
); (可不寫 但是可能會報跨域問題 可自行測試執行)
$fp=fopen
('php://output'
,'a');
mb_convert_variables
('gbk'
,'utf-8'
,$head);
//匯出表頭的字型設定
fputcsv
($fp
,$head);
$persize
=1000
;//每次執行1000次
$pages
=ceil
($count
/$persize);
for($i=
1;$i<=
$pages;$i
++));
unset
($db_data);
ob_flush()
;flush()
;}fclose
($fp);
exit()
;
方法二
/**
* 分批匯出
* @param request $request
*/public
function
bpout
(request $request))
->
orwhere
(function
($query))
;})-
>
distinct
('order_sn')-
>
orderby
('id'
,'asc')-
>
count()
;}else
$limit
=10000
;//限制查詢
$page
=ceil
($count
/$limit);
//頁數
header
('content-description: file transfer');
header()
;header
('content-disposition: attachment; filename="'
.$filename
.'"');
header
('expires: 0');
header
('cache-control: must-revalidate');
header
('pragma: public');
$fp=
fopen
('php://output'
,'a');
//開啟output流
ob_clean()
;$title=[
'訂單編號'
,'旺旺id'
,'使用者暱稱'
,'手機號'
,'id號'
,'資訊'
,'原因'];
mb_convert_variables
('gbk'
,'utf-8'
,$title);
fputcsv
($fp
,$title);
for($i=
0;$i<
$page;$i
++))-
>
orwhere
(function
($query))
;})-
>
distinct
('order_sn')-
>
offset
($offset)-
>
orderby
('id'
,'asc')-
>
limit
($limit)-
>
get()-
>
toarray()
;}else
foreach
($dbs
as$db
)unset
($dbs);
}ob_flush()
;flush()
;fclose
($fp);
exit()
;}
scss 中公共變數的匯出方法 export
在使用vue或者react開發專案時都會用到scss,或者less等的擴充套件語言,那麼肯定會有公共變數提取與使用,這篇文章就是記錄如何匯出公共css變數的 menutext bfcbd9 menuactivetext 409eff submenuactivetext f4f4f5 menubg 3...
大資料匯出2
經過幾天的折騰,終於把這個頑固的工程做完了,現在60萬資料40秒匯出到本地。嘗試了很多的辦法,現在放上最優秀的做法供參考。第一,優化資料表,加上相應的索引,分割槽。第二,讀庫操作。分多執行緒,採用threadpool。第三,匯出操作,1 採用aspose.cells 2 採用多檔案方式,要麼以記錄行...
POI 大資料匯出
gradle 匯入 org.apache.poi poi ooxml 3.14 poi對excel的匯出操作,一般只使用hssfworkbook以及sxssfworkbook hssfworkbook用來處理較少的資料量,sxssfworkbook用來處理超大資料量的匯出,20w資料沒什麼問題。注意...