Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导出到CSV或excel时是否存在任何PHP性能问题_Php - Fatal编程技术网

导出到CSV或excel时是否存在任何PHP性能问题

导出到CSV或excel时是否存在任何PHP性能问题,php,Php,我正在使用php将大量数据导出到excel 我将其更改为csv和文本 我看不出文件大小有什么不同 所以PHP性能与文件格式有关 即使文件格式不同,行和列也是相同的。 考虑60列和100000行。 除了ini内存限制和执行时间之外,还有其他优化技术吗。 我们必须小心据我所知,用于PHP的各种Excel库将在内存中构建电子表格,这可能会导致非常大的数据集出现问题。另一方面,CSV/txt可以针对每一行写入磁盘或客户端,因此内存使用量最小 就性能而言,Excel库的开销总是更大。文件中有各种额外的Ex

我正在使用php将大量数据导出到excel

我将其更改为csv和文本

我看不出文件大小有什么不同

所以PHP性能与文件格式有关

即使文件格式不同,行和列也是相同的。 考虑60列和100000行。

除了ini内存限制和执行时间之外,还有其他优化技术吗。
我们必须小心

据我所知,用于PHP的各种Excel库将在内存中构建电子表格,这可能会导致非常大的数据集出现问题。另一方面,CSV/txt可以针对每一行写入磁盘或客户端,因此内存使用量最小

就性能而言,Excel库的开销总是更大。文件中有各种额外的Excel特定二进制位,需要在PHP中进行特殊处理,而CSV只是纯文本。PHP的核心目的是能够非常快速地吐出大量文本,因此生成csv/txt总是会更快。当然,还有函数调用。在伪代码中,考虑以下不同:

CSV:

与Excel相比:

$workbook->write('A1', $column1);
$workbook->write('B1', $column2);
$workbook->write('C1', $column3);
$workbook->write('D1', $column3);

etc...

Excel的优点是,特别是使用XLSX时,有一些压缩,因此相同数量的数据将占用更少的空间。通过在Web服务器中使用压缩,或将CSV/txt输出输入到Zip库服务器端,可以在一定程度上缓解这一问题。

如何导出到Excel?我希望看到CSV、XLS和XLSX文件大小之间存在相当大的差异。如果你不知道自己是如何完成exportshow的,那么很难给你任何最佳表现,这意味着。。。我从存储过程中获取数据数组,并使用php选项卡进行打印,将标题和内容类型分隔为xls或CSVT,这解释了为什么文件大小没有任何差异。您只需创建一个以制表符分隔的值文件,并在标题中设置内容类型。。。。这不会自动将分隔的选项卡转换为Excel文件头(“内容处置:附件;文件名头(“内容类型:application/vnd.ms Excel”);所以…我正在创建一个文件,可以将其称为CSV..only.not xls…但看起来像xls和扩展名。类似于假xls:)Am无论如何都不会创建真正的xls,因为这会增加负载。感谢Marc的响应和知识传授。您可以创建一个CSV文件,称它为
随便什么。xls
和Excel将加载它。但是,如果您想使用任何格式/公式,或多个工作簿,其中没有一个是pla,则必须将其重新保存为真正的Excel文件在CSV文件支持。正如你所说,使用任何用于PHP的Excel库都会有很大的内存开销…我知道唯一一个不完全在内存中的是一个封闭源代码的商业产品,尽管我需要仔细看看Ilia Alshanetsky的,因为我看到你在Excel中非常出色:)…你有什么建议我可以做吗当我导出100万条或更多记录时,php ini或php或任何东西。csv文件是否有任何限制,它可以容纳。。
$workbook->write('A1', $column1);
$workbook->write('B1', $column2);
$workbook->write('C1', $column3);
$workbook->write('D1', $column3);

etc...