我想將我的大型資料庫資料下載為 excel。但是由于資料量巨大,下載它感覺像是不可能的,因為它會給服務器帶來很大的負載,需要大量的處理時間并且它不斷崩潰。
現在,我想創建多個臨時 excel 檔案,以“移動”一些有限的資料Ex: 50000 rows of data& 在資料的末尾,我想在 Zip 中下載所有這些臨時檔案。因此,它不會加載服務器并防止其崩潰。
是否可以通過 PHP-CodeIgniter 實作。有人可以指導我嗎?
uj5u.com熱心網友回復:
您可以通過多種方式做到這一點。
- 您認為將其壓縮在檔案夾中
- 增加 CI 或服務器中的執行限制和記憶體限制。
- 實作佇列服務
對于壓縮,你可以像下面這樣
<?php
// Enter the name of directory
$pathdir = "DirectoryName/";
$zipcreated = "NameOfZip.zip";
$zip = new ZipArchive;
if($zip -> open($zipcreated, ZipArchive::CREATE ) === TRUE) {
// Store the path into the variable
$dir = opendir($pathdir);
while($file = readdir($dir)) {
if(is_file($pathdir.$file)) {
$zip -> addFile($pathdir.$file, $file);
}
}
$zip ->close();
}
?>
對于增加選項:
您可以在 PHPExcel 中使用 excel5。它可以處理 65536 行。為了那個原因
ini_set("max_execution_time", 'time_limit'); //see manual
ini_set('memory_limit', 'memory_limit'); //your memory limit as string
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
之后按照PHPExcel的檔案進行操作。
對于佇列選項: 這是一個有點復雜的程序。您可以實作佇列服務并將生成 excel 的責任交給佇列服務。生成后可以通知用戶或者回傳excel檔案的下載地址。對于通知,您還需要實作通知服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/378627.html
