我在将数组发送到另一个PHP页面时遇到问题。我们将一个数组从一个页面发送到另一个页面以生成已从XML转换的CSV文件。因此我们采用800mb的XML文件并将其转换为20mb的CSV文件。我们正在删除其中的大量信息,它运行30分钟。
无论如何,我们定期使用一个函数在浏览器中输出转换的进度:
function outputResults($message) {
ob_start();
echo $message . "<br>";
ob_end_flush();
ob_flush();
}
$ masterArray 包含我们从XML解析的关联数组中的所有信息。
我们从 index.php 发送到另一个名为 create_CSV_file.php
$ masterArray ) >最初我们在 index.php 中使用了 include(&#39; create_CSV_file.php&#39;),但由于CSV文件中使用了标头,因此给了我们消息
警告:无法修改标头信息 - 已发送的标头
。所以我们开始研究如下推送阵列的解决方案。
echo "<a href='create_CSV_file.php?data=$masterArray'>**** Download CSV file ***</a>";
我一直收到上面回显的错误信息:
注意:数组转换为字符串
能够在服务器运行时显示echo语句的最佳方法是什么,然后能够在结束时下载结果CSV?
答案 0 :(得分:0)
好的,首先,使用网址(GET)中的数据有一些严重的限制。较旧版本的IE仅支持4096字节的URL。此外,一些代理和其他软件强加了自己的限制。
我确定您之前已经听过这个消息,但如果没有......您不应该从Web服务器运行一个花费超过几秒钟(最多!)的进程。他们没有针对它进行优化。你绝对不希望将兆字节的数据传递给客户端,以便他们可以将其发送回服务器!
这样的事情怎么样......
优点:
它有一个缺点,就是你需要自己清理 - 你需要删除你在磁盘上创建的文件,但是,你已经对数据库中的所有文件进行了完整的审计并删除了任何内容。超过x天,这将是微不足道的。