【发布时间】:2015-12-12 04:04:43
【问题描述】:
我在将数组发送到另一个 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 的 php 文件的数组 ($masterArray)
最初我们在 index.php 中使用了 include('create_CSV_file.php') ,但由于 CSV 文件中使用的标头,它给了我们消息那个
警告:无法修改标头信息 - 标头已发送
。所以我们开始研究如下推送数组的解决方案。
echo "<a href='create_CSV_file.php?data=$masterArray'>**** Download CSV file ***</a>";
我不断收到带有上述回声的错误消息:
注意:数组到字符串的转换
在服务器运行时能够显示来自服务器的 echo 语句,然后能够在最后下载结果 CSV 的最佳方法是什么?
【问题讨论】:
-
请勿将
serialize()用于此目的。使用http_build_query()。 -
看来你最好把数组塞进会话中,因为它已经在服务器端了,没有理由把它推过页面
-
我不会将数据保存为会话变量,我会将数据存储为服务器端文件。这样您就可以验证数据完整性和操作是否完成。