【问题标题】:Create a temp excel & bulk download all with zip in PHP在 PHP 中使用 zip 创建一个临时 excel 和批量下载
【发布时间】:2022-01-12 05:49:15
【问题描述】:

我想将我的大型数据库数据下载为 excel。 但是由于数据量巨大,下载起来感觉不太可能,因为它给服务器带来了很大的负载,需要大量的处理时间,而且总是崩溃。

现在,我想“随时随地”创建多个临时 excel 文件,其中包含一些有限数据 Ex: 50000 rows of data 和在数据末尾我想以 Zip 格式下载所有这些临时文件。 因此,它不会加载服务器并防止其崩溃。

是否可以通过 PHP-CodeIgniter 实现。有人可以指导我吗?

【问题讨论】:

  • 通过 PHP 将数据导出到 Excel / CSV 并不困难。您可以使用fputcsv() 之类的命令或使用PHPExcel 之类的第三方库

标签: php jquery mysql codeigniter


【解决方案1】:

您可以通过多种方式做到这一点。

  1. 您认为将其压缩到文件夹中
  2. 增加 CI 或服务器中的执行限制和内存限制。
  3. 实现队列服务

对于压缩,您可以按照以下方式进行操作

<?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文件的下载地址。 对于通知,您还需要实现通知服务。

【讨论】:

    猜你喜欢
    • 2014-10-28
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2013-09-27
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多