Home > php教程 > php手册 > PHP的echo为什么这么慢

PHP的echo为什么这么慢

WBOY
Release: 2016-06-21 08:52:29
Original
1406 people have browsed it

  作为一个行走江湖多年的老中医,今天受命去解决一例前端页面展现缓慢的问题。问题页的情况如下:

  apache + php

  使用smarty模板输出内容

  页面最终输出内容较大,80k+

  页面执行时间在500ms以上

  祭出法宝xhprof对问题页面做了细致检查,发现页面的瓶颈竟然是模板(编译后的)中的一个echo语句,这个echo语句输出的字符串比较大,大概是50k+字节,花费时间为400多毫秒,占整个页面执行时间的80%。这样的echo输出在站点首页中其实是很常见的事情,没有数据库操作,按道理执行时间不应该这么长。

  于是猛力使用搜索技能,最终在php手册的echo部分找到了一些蛛丝马迹,早在2003年就有前辈认为通过echo输出大字符串到客户端会引起服务器的性能问题,据我测试,在这个场景下使用print其实也是一样的慢。建议的解决办法是把字符串切割成更小的字符串输出,展现速度会有提升,输出函数如下:

  

  function echobig($string, $bufferSize = 8192) {

  $splitString = str_split($string, $bufferSize);

  foreach($splitString as $chunk)

  echo $chunk;

  }

  ?>

  但是上面的处方不太对症,整个echobig的输出时间仍然在400毫秒左右,没有太大改善。

  考虑到是输出大量内容到客户端比较慢,于是检查了apache的配置,原来还没打开deflate进行压缩,遂启用之。再次使用xhprof进行检查,这条echo的输出时间降低到5ms左右。

  400ms到5ms,一个配置问题会产生80倍的差距,还真是省老钱了。这个故事告诉我们,压缩输出真的很重要。

UPDATE:加速你的echo http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2011/1127/9361.html



Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template