在3月10日由@百度主办、@InfoQ策划组织和实施的第24期百度技术沙龙活动上,来自百度PHP高级顾问,PHP语言开发组成员惠新宸(@laruence)、腾讯网媒产品技术部高级工程师付超群(@付超群)分别分享了各自在PHP性能优化上取得的成果及经验,话题涉及“PHP5.4新特性与性能优化”,以及“高性能LAMP程序设计”等。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。
\ \来自百度PHP高级顾问,PHP语言开发组成员惠新宸第一个为大家分享,演讲内容主要包括PHP 5.X版本性能对比,PHP 5.4新特性以及常用的优化技巧等。惠新宸首先分分享了PHP5.4所带来的主要新特性:
\\\
- Traits\
- Built-in web server\
- Array de-referencing\
- Class member access on instantiation\
- Shortened array syntax\
- Binary number format\
本次活动主要分享到5.3到5.4版本的优化策略。惠新宸提到了Runtime Binding Cache策略,这样做的好处就是:
\\\
- 减少符号查找次数\
- 基于Literal Table\
- 一次查找,就Cache起来\
- 多态带来了意外\
此外,亦可通过Internal String策略具有以下特点:
\\\
- 编译期已知的字符串\
- 对于多个Constant String,只保存一份\
- 使用比较Char*pointer相等来代替strcmp\
- 避免了estrdup和efree\
- 预先计算Hash Value\
最后,惠新宸还提到了Property Directly Access,Zend Signal,Request Startup/Shutdown,Ternary及FastCGI SAPI Optimization等策略。
\ \腾讯网媒产品技术部高级工程师付超群第二个为大家分享,主要内容分为PHP篇、WebServer篇、数据库篇、常用组建篇、架构篇及前端篇等几部分。付超群首先讲解了在使用Apache和Ngix时的一些技巧与经验,如只加载用到的模块、mpm的选择以及CPU亲和性等,他提到在使用MySQL时,通过以下策略可对性能有所提升:
\\\
- 动静分离\
- 分库分表\
- 良好的索引\u0026amp;Explain\
- 主从同步,通过从库来扩展读\
- 尽量Cache,减少SQL操作\
- 批量操作\u0026amp;队列\
此外,付超群还强调讹传比性能更可怕,比如:left join都很慢、like用不到索引、char一定比varchar好等。在常用组件部分,付超群介绍了消息队列的用处,比如可以异步处理耗时操作(发邮件、发微薄等),这些均可通过Memcacheq、beanstalkd和RabbitMQ等开源项目实现。在涉及全文检索类操作时,可以使用scws处理中文分词,使用coreseek进行集成等。在介绍架构对性能产生的影响时,付超群建议要遵循以下原则:
\\\
- 先抗住,再优化\
- 过度设计比不设计更龌龊\
- 越简单越好\
- 如非必要,不要引入\
- 层次清晰\
- 良好的监控预警\
接下来付超群向大家分享了自选股产品和接口平台的构建经验以及使用情况。分享的最后,付超群还提及了在前端上的一些优化技巧:
\\\
- CSS Sprite\
- 对图片和头像等采用Lazy Loading\
- 合并请求\
- 避免重定向\
- Gzip\
- 采用CDN\
- 静态文件使用无cookie域名\
- CSS放顶部,JS放底部(通常情况下)\
前端在PHP性能优化中如此重要,怪不得连PHP之父Rasmus Lerdorf都会认为:
\\\PHP is rarely the bottleneck, 80-90% front-end。
\
Open Space(开放式讨论环节)
\和以往的环节一样,为了让参会者能够有更多的时间进行相互的交流,本次活动依然设置了Open Space(开放式讨论)环节。本次还邀请到了国内问答网站SegmentFault到场分享,SegmentFault技术负责人祁宁和大家分享了作为国内针对程序员问答社区所遇到的技术问题和经验。
\会后,一些参会者也通过新浪微博分享了他们的参会感受:
\\\@xy26:懒加载是一种不错的Web呈现方式。
\@懒桃儿吃桃儿:跨IDC专线进行数据同步,基础设施拼财力呀。
\@陈五十:性能优化无止境,作为一个后端工程师,付超群的建议都很需要注意。
\@SweetyDong:超群讲的对工作比较有帮助。
\@吴佰清:最后总结,5.4相对5.3带来了多大提升,主要针对OO来做提升,最高提升48%。不建议升级5.4,APC会出现兼容性问题。
\@许浩-sean:PHP 5.4新特性与性能优化,@Laruence 视野很开阔,收获不小。
\@我爱儿童团-杨京:这个测试比较干货,要看看,测一下,一时半会还是不要升级,要稳定,不要着急尝鲜。
\@大皮:内核级别的优化,有点深,这就是差距,好好学习吧。
\@一个飞翔的鱼:PHP 5.4的性能真是越来越好了,今天真是了解了不少内部的细节。
\
有关百度技术沙龙的更多信息,可以通过新浪微博关注@百度技术沙龙,或者加入百度技术沙龙微群,InfoQ上也总结了过往23期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读。
\号外:2012百度开发者大会将于3月23日在北京国际会议中心举行。众多技术专家将与您一同探讨“应用为王”的中国互联网趋势和开发者在开放格局下的新机遇;深度交流搜索引擎、云计算、移动互联网、Web Apps等方向的技术创新。现在可以免费报名,或查看大会详细议程。