我目前正在编写xml并完成以下操作:
header ("content-type: text/xml");
header ("content-length: ".strlen($xml));
$ xml是要写出的xml。我接近大约1.8兆的文本(我通过firebug发现),看起来写作比脚本运行花费的时间更多..有没有办法提高写入速度?
提前谢谢。
答案 0 :(得分:2)
这实际上取决于你如何编写数据。如果您正在使用DOM,请考虑使用XMLWriter。它更快,更简化。
如果您正在自行创建XML输出,请确保不会不必要地附加字符串。例如:
echo "<tag>" . $data . "</tag>"; // this is slower
echo '<tag>', $data, '</tag>'; // this is faster
逗号运算符不会创建新字符串。另外要考虑的是,单引号字符串比双引号略快。没有可变替换来扫描。通常情况下,差异很小,但在紧密循环中你绝对可以看到它。
根据您的数据源以及构建XML的方式,您的处理可能是瓶颈。尝试使用xdebug进行分析,并查看瓶颈实际存在的位置。
答案 1 :(得分:0)
谷歌的结果似乎表明,回声对大字符串的性能很差。一种解决方案是将字符串断开以回显成块;
function echobig($string, $bufferSize = 8192)
{
$splitString = str_split($string, $bufferSize);
foreach($splitString as $chunk)
echo $chunk;
}
请注意,我没有测试过这段代码;我在php docs找到了它。对于有类似问题的其他人,请阅读this blog post,将回声字符串拆分为块。
答案 2 :(得分:0)
尝试将XML转储到临时文件然后使用readfile
将数据发送给用户可能是值得的。