Press "Enter" to skip to content

PHP是无辜的

今天在微薄看到一个转帖, 题目触目惊心《PHP的echo为什么这么慢》,
点进去一看, 大意是说在PHP中echo一个500K的字符串, 会耗时几百ms,
然后作者说打开Apache的压缩以后呢, 速度就快了.
之后, 又看到一个同学, 从HTTP协议入手, 分析了chunked模式和直接传输模式, 意思可能是说, 和分段传输相关...
我在这里不是批评或者驳斥谁, 相关者莫要生气, 我只是害怕误导别人..
echo 一个500K的字符串, 速度慢, 这个和PHP没关系, 也和PHP的实现者C也没关系,, 关系在于IO, IO的速度限制了输出的速度,,
至于说Apache的压缩,,这个,,压缩了, 字符串变小了(字符串的压缩率很大), 自然也就快了(CPU换IO)....
最后, PHP真的很无辜, 和它真没关系..

24 Comments

  1. yhg7752
    yhg7752 August 14, 2012

    支持下。。。。。。。

  2. qinggan
    qinggan March 29, 2012

    我一直在PHP最浅层上折腾!
    我当时在学习PHP就是冲着,输出只要“echo”,而不像ASP那样子的,什么 Respons…write(哎,杯具啊,到现在这个词还写不出来)——刚学习,哪知道封装函数的说法啊(正儿八经的草根中的草根!)

  3. […] 执行时间会明显的长, 也就会有朋友认为PHP的ECHO性能很差. 我在之前的文章中, 已经解释过了原因, 也希望能纠正”PHP的ECHO性能差”的这个误会. […]

  4. ioio
    ioio January 20, 2011

    dth801 | 23 Dec 2010 14:42
    来向大牛求助… 不知道有没搞过Mysql数据的字符集转换? 我需要从utf8_general_ci 转到 gbk_chinese_ci 求助求助~~~~ 怕你不查看留言,错宝地再发一下 见谅..
    mysqldump的时候指定一下字符集吧,mysqldump –default-character-set=gbk_chinese_ci > /tmp/sql.log

  5. php
    php January 14, 2011

    博客好久没看到新内容了

  6. 文博编辑
    文博编辑 January 6, 2011

    有空请加我QQ 聊一下图书选题1370610196@qq.com

  7. BruceWolf
    BruceWolf January 4, 2011

    应该是和浏览器端的渲染有关,当数据只传输一部分时浏览器会立即解析已接收的数据(HTML)却又不能有效解析(比如闭合标签还未发送过来),解析效率很低而影响数据的整体接收和表现,在用户的角度就会明显感觉到很卡,其实不是网络问题、也不是服务器端的问题,虽然这会导致整个数据传输过程增长,但不是服务器端的问题,而是浏览器的问题。
    使用 output buffer 会好很多。使用 gzip 应该和使用 ob 差不多,是压缩好之后一次性发送给浏览器端。
    不过话说回来,数据不能快速、完整的发送给浏览器,服务器端应该也有问题,但是不是局限于 php。在高速网络这些优化是有意义的,如果网络速度非常慢,像电信、网通互访那样,,这些优化在浏览器渲染效率的提升上也没太大意义。

  8. chancey
    chancey December 24, 2010

    明显是网络传输的延迟

  9. lanye
    lanye December 24, 2010

    ECHO 字符大自然慢了!

  10. dth801
    dth801 December 23, 2010

    @雪候鸟
    我也确实是这样做的,但我感觉这样很笨…
    我的场景是因为之前设计的失误,页面编码和数据库编码不一致,从而导致了虽然页面显示正常,但直接查看数据库中的数据是乱码.因此我用phpmyadmin导出来的数据也是乱码,更别想往GBK的库中导了. 我的想法是有没有办法把我通过phpmyadmin导出来的乱码文件转换成正常的GBK编码格式的? 因为虽然是乱码,但通过PHP程序调用到页面的是可以正常显示的.
    稍微通用也行呀 不通用的结果就是我用PHP读出来再插进去了十六W条记录 郁闷…

  11. 雪候鸟
    雪候鸟 December 23, 2010

    @dth801 导出来, 转换, 导进去~

  12. dth801
    dth801 December 23, 2010

    来向大牛求助… 不知道有没搞过Mysql数据的字符集转换? 我需要从utf8_general_ci 转到 gbk_chinese_ci 求助求助~~~~ 怕你不查看留言,错宝地再发一下 见谅..

  13. tomheng
    tomheng December 21, 2010

    要不然又被误导了

  14. ning
    ning December 19, 2010

    最近还看到一个比这个php还无辜的是mysql。。。
    大意是说mysql一个查询几万条记录要几秒钟,然后以前用sql server多么会,总结是看来mysql还不行,我都直接无语了,很想知道他数据库是怎么设计的,然后抓住抽一顿。。。

  15. enjoy
    enjoy December 17, 2010

    确实PHP很无辜…

  16. piao2010
    piao2010 December 17, 2010

    可以理解成是慢在Apache输出上了么?还是说客户端的IO

  17. liuw
    liuw December 17, 2010

    时空转换。
    他怎么不说echo 1T字节的东西会死机。

Comments are closed.