這篇文章為大家帶來了關於PHP csv的相關知識,其中主要介紹了php百萬資料怎麼透過腳本檔案寫入csv的相關內容,下面一起來看看怎麼實現的吧,希望對大家有幫助。
需求:
百萬資料寫入 csv。
框架:
N 多年前老框架,百度都搜不到了,所以寫法趨近原生
##分析:
資料量過大,不能用瀏覽器請求寫入csv 下載,所以寫個腳本調取偽代碼:
//xxx - 根据自己项目替换 //调取脚本文件 exec(xxx); //脚本文件 //设置执行时间和内存 set_time_limit(0); ini_set('memory_limit', '128M'); //循环获取 $id = 0; $data = 'xxx'.'\n';//表头 while(true){ //SQL $list = xxx WHERE id > $id ORDER BY id ASC LIMIT 10000; //每次取1w防止数据库压力大,根据sql来,我这个有联表, if(empty($list)){ break; } foreach($list as $row){ $data .= '"' . $row['xxx'] . '",'; $data .= "\n"; $id = $row['id'];//更新最大id } //追加写入csv file_put_contents('xxx', mb_convert_encoding($data, 'gbk'),FILE_APPEND); unset($data);//基础不好不确定初始化能不能清内存就先unset了 $data = '';//初始化 }本質上就是分批寫入,剛開始試驗的時候是打算不把file_put_contents 寫在循環裡的,後來發現數據量大的時候,幾十萬數據$data 內存就超了另外如果超百萬數據的話需要做分文件匯出,excel 不支援開啟超過1048576 行,理論上就是加個$all_count 參數計目前查詢的總數,超過百萬再加新檔案。 如果有更好的方法,或者程式碼優化部分歡迎討論。 推薦學習:《
PHP影片教學》
以上是聊聊php百萬資料怎麼寫入csv的詳細內容。更多資訊請關注PHP中文網其他相關文章!