msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

17 Dec 10 PHP是无辜的

今天在微薄看到一个转帖, 题目触目惊心《PHP的echo为什么这么慢》,

点进去一看, 大意是说在PHP中echo一个500K的字符串, 会耗时几百ms,

然后作者说打开Apache的压缩以后呢, 速度就快了.

之后, 又看到一个同学, 从HTTP协议入手, 分析了chunked模式和直接传输模式, 意思可能是说, 和分段传输相关…

我在这里不是批评或者驳斥谁, 相关者莫要生气, 我只是害怕误导别人..

echo 一个500K的字符串, 速度慢, 这个和PHP没关系, 也和PHP的实现者C也没关系,, 关系在于IO, IO的速度限制了输出的速度,,

至于说Apache的压缩,,这个,,压缩了, 字符串变小了(字符串的压缩率很大), 自然也就快了(CPU换IO)….

最后, PHP真的很无辜, 和它真没关系..


分享到:



Random Posts:

22 Responses to “PHP是无辜的”

  1. 《转载》加速PHP的ECHO – 猫の家 |

    [...] 我在之前的文章中, 已经解释过了原因, 也希望能纠正”PHP的ECHO性能差”的这个误会. [...]

  2. 加速PHP的ECHO | 酷狗明程序人生 |

    [...] 我在之前的文章中, 已经解释过了原因, 也希望能纠正”PHP的ECHO性能差”的这个误会. [...]

  3. yhg7752 |

    支持下。。。。。。。

  4. qinggan |

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

  5. 加速PHP的ECHO « Runtester技术中心 |

    [...] 我在之前的文章中, 已经解释过了原因, 也希望能纠正”PHP的ECHO性能差”的这个误会. [...]

  6. PHP是无辜的 | 万维网黑客联盟 |

    [...] 本文地址: http://www.laruence.com/2010/12/17/1833.html [...]

  7. 加速PHP的ECHO | 万维网黑客联盟 |

    [...] 我在之前的文章中, 已经解释过了原因, 也希望能纠正”PHP的ECHO性能差”的这个误会. [...]

  8. 加速PHP的ECHO | 风雪之隅 |

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

  9. ioio |

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

    mysqldump的时候指定一下字符集吧,mysqldump –default-character-set=gbk_chinese_ci > /tmp/sql.log

  10. php |

    博客好久没看到新内容了

  11. 文博编辑 |

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

  12. BruceWolf |

    应该是和浏览器端的渲染有关,当数据只传输一部分时浏览器会立即解析已接收的数据(HTML)却又不能有效解析(比如闭合标签还未发送过来),解析效率很低而影响数据的整体接收和表现,在用户的角度就会明显感觉到很卡,其实不是网络问题、也不是服务器端的问题,虽然这会导致整个数据传输过程增长,但不是服务器端的问题,而是浏览器的问题。

    使用 output buffer 会好很多。使用 gzip 应该和使用 ob 差不多,是压缩好之后一次性发送给浏览器端。

    不过话说回来,数据不能快速、完整的发送给浏览器,服务器端应该也有问题,但是不是局限于 php。在高速网络这些优化是有意义的,如果网络速度非常慢,像电信、网通互访那样,,这些优化在浏览器渲染效率的提升上也没太大意义。

  13. chancey |

    明显是网络传输的延迟

  14. lanye |

    ECHO 字符大自然慢了!

  15. dth801 |

    @雪候鸟
    我也确实是这样做的,但我感觉这样很笨…

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

  16. 雪候鸟 |

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

  17. dth801 |

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

  18. tomheng |

    要不然又被误导了

  19. ning |

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

  20. enjoy |

    确实PHP很无辜…

  21. piao2010 |

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

  22. liuw |

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

Leave a Reply

*