适用于导出大量csv文件
不懂 yield 的 去 这里
小文件 导出 可以用这个
function test(){
$res = exec_db1("select * from tab_user_game limit 0 ,50000");
while ($row = mysqli_fetch_assoc($res)) {
yield $row;
//$data[] = $row;
}
}
?>
<a href="./cache/cehsi.csv" download="cehsi.csv"> 大量csv文件导出 </a>
<?php
csv_export(test());
function csv_export($data = array()) {
ini_set('max_execution_time', 0);// 设置PHP超时时间
ini_set('memory_limit', '2048M');// 设置PHP临时允许内存大小
$filePath = '/home/www/admin.1yx.com/cache';
//计数器
$num = 0;
$file_name = 'cehsi.csv';
$limit = 1000;
//逐行取出数据,不浪费内存
$count = count($data);
$url = $filePath."/".$file_name;
$fp = fopen($url, 'w'); //生成临时文件
for ($i = 0; $i < $count; $i++) {
$num++;
//刷新一下输出buffer,防止由于数据过多造成问题
if ($limit == $num) {
$num = 0;
ob_flush();
flush();
}
foreach ($data as $key => $value) {
fputcsv($fp, $value);
}
}
}