親測有效,三萬條資料秒秒鐘導出
先進行資料表插入資料
ini_set('memory_limit','1024M'); //設定程式運作的記憶體
ini_set('max_execution_time',0); //設定程式的執行時間,0為無上限
ob_end_clean(); //清除記憶體
ob_start();
$in = 0;
for($i=2880;$i<=30000; $i++) {
$data = ['uname'=>'uname:'.$i, 'aname'=>'賬号:'.$i, 'pwd'=>'111'.$i];
$r = DB::table('enroll_activity_admin')->insert($data);
if($in==1000){ //每次寫入1000條資料清除記憶體
$in=0;
ob_flush();//清除記憶體
}
$in++;
}
ob_end_clean();die;
在進行導出資料
$fileName = '酒店';
$headArr = ['姓名', '賬号', '密碼']; //表頭,名稱可自定義
$data = Db::table('enroll_activity_admin')->where('is_del','0')->field('uname,aname,pwd')->select();
ini_set('memory_limit','1024M'); //設定程式運作的記憶體
ini_set('max_execution_time',0); //設定程式的執行時間,0為無上限
ob_end_clean(); //清除記憶體
ob_start();
header("Content-Type: text/csv");
header("Content-Disposition:filename=".$fileName.'.csv');
$fp=fopen('php://output','w');
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));
fputcsv($fp,$headArr);
$index = 0;
foreach ($data as $item) {
if($index==1000){ //每次寫入1000條資料清除記憶體
$index=0;
ob_flush();//清除記憶體
flush();
}
$index++;
fputcsv($fp,$item);
}
ob_flush();
flush();
ob_end_clean();