PHP提高了页面写入速度

PHP提高了页面写入速度,php,xml,optimization,Php,Xml,Optimization,我目前正在编写xml,并完成了以下工作: header ("content-type: text/xml"); header ("content-length: ".strlen($xml)); $xml是要写出的xml。我大约有1.8兆的文本(我是通过firebug找到的),似乎写的时间比脚本运行的时间要长。。有没有办法提高这种写入速度 提前谢谢。这取决于您如何编写数据。如果你使用DOM,考虑XMLWriter。它更快,更流线型 如果您正在处理XML输出,请确保没有不必要地附加字符串。例如:

我目前正在编写xml,并完成了以下工作:

header ("content-type: text/xml");
header ("content-length: ".strlen($xml));
$xml是要写出的xml。我大约有1.8兆的文本(我是通过firebug找到的),似乎写的时间比脚本运行的时间要长。。有没有办法提高这种写入速度


提前谢谢。

这取决于您如何编写数据。如果你使用DOM,考虑XMLWriter。它更快,更流线型

如果您正在处理XML输出,请确保没有不必要地附加字符串。例如:

echo "<tag>" . $data . "</tag>"; // this is slower
echo '<tag>', $data, '</tag>';   // this is faster
echo”“$数据。""; // 这比较慢
回显“”,$data“”;//这个更快
逗号运算符不创建新字符串。同样要考虑的是,单引号字符串比双引号略微快一些。没有要扫描的变量替换。通常情况下,差异是最小的,但在一个紧密的循环中,你肯定可以看到它


根据数据源和XML的构造方式,处理可能是瓶颈。试着分析一下,看看你的瓶颈到底在哪里。

谷歌的结果似乎表明echo对大字符串的性能很差。一种解决方案是将要回显的字符串分成块

function echobig($string, $bufferSize = 8192)
{
    $splitString = str_split($string, $bufferSize);

    foreach($splitString as $chunk)
        echo $chunk;
}

请注意,我还没有测试过这段代码;我在公园里找到的。请阅读有类似问题的其他人的文章,这些问题是通过将回显字符串拆分为块来解决的。

可能值得尝试将XML转储到临时文件,然后使用将数据发送给用户。

我不确定是否理解。您的意思是,将
$xml
打印到页面的时间比脚本运行的时间长?这就好比说PHP的运行时间比PHP长。也许你指的是下载网页内容所需的时间?对不起,让我说得再清楚一点。。看起来,我将执行echo($xml);在一秒钟内运行,同时回显实际的$xml元素会使浏览器停滞,并占用大部分时间。正如您所说,您的浏览器正在下载1.8mb的数据,这可能需要大量时间。你有没有考虑过用apache和mod_deflate压缩你的页面?默认情况下是否打开了压缩你的页面?我将重新检查,但我相当确定这已经发生了。内容长度是否可以响应缓存的值?strlen()有点贵。或者XML是从查询生成的?如果是这样,每个查询可以缓存该长度吗?Ie如果1000万人请求books.xml,除非更改,strlen()应该只运行一次。目前使用XMLWriter,从我自己开始,但发现我可以使用XMLWriter通过刷新来减少内存。我将在xdebug上取得一个顶峰。谢谢,还有一件事需要注意:确保输出缓冲已关闭是的,一旦我意识到它已打开,就将其关闭。。这改变了很多事情。