Home >php教程 >php手册 >PHP的echo输出内容过多会很慢

PHP的echo输出内容过多会很慢

WBOY
WBOYOriginal
2016-06-13 09:36:411528browse

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

apache + php

使用smarty模板输出内容

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

页面执行时间在500ms以上

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

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

<?php //对大字节字符串进行分割保存到数组中,然后循环输出
function echoBigChar($string,$bufferSize=8192){
	$splitString=str_split($string,$bufferSize);
	foreach($splitString as $chunk){
		echo $chunk;
	}
}

但是上面的处方不太对症,整个echobig的输出时间仍然在400毫秒左右,没有太大改善。考虑到是输出大量内容到客户端比较慢,于是检查了apache的配置,原来还没打开deflate进行压缩,遂启用之。再次使用xhprof进行检查,这条echo的输出时间降低到5ms左右。400ms到5ms,一个配置问题会产生80倍的差距,还真是省老钱了。

这个故事告诉我们,开启压缩输出真的很重要。

您可能感兴趣的文章

  • 用PHP函数memory_get_usage获取当前PHP内存消耗量以实现程序的性能优化
  • php获取内容中的所有图片列表并输出的方法
  • php获取某段时间内每个月的方法,返回由这些月份组成的数组
  • php 将字符串中的连续多个空格转换为一个空格
  • 如何使用zlib压缩输出内容以提高网页打开速度
  • 文本区域textarea框根据输入内容自适应高度
  • php程序员们必须知道的PHP代码优化的40条
  • Javascript将内容分享到各大社交平台网站的代码总结
Statement:
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