采访:新浪微博架构师兼首席 PHP 技术顾问惠新宸谈 PHP 的架构与发展

阅读数:15368 2012 年 6 月 29 日

话题:PHP架构DevOps语言 & 开发文化 & 方法

惠新宸于 2011 年 8 月作为核心开发人员加入 PHP 语言官方开发组,目前是该组织的唯一一位国人,也是国内最具影响力的 PHP 技术专家之一。 惠新宸作为知名 PHP 技术博客“风雪之隅”(http://www.laruence.com/) 的博主, 一直专注与 PHP 底层原理的研究和分享。 其中《深入理解 PHP 原理》系列文章被广泛推荐, 成为国内 PHP 语言深度使用和定制的经典入门教材。他基于 PHP 扩展开发的 PHP 框架 Yaf, 被誉为最快的 PHP 开发框架。同时他还是 Lua,Taint 等 PHP 扩展的作者。在 PHP 5.4 开发过程中,他一共为 PHP 贡献了近 400 个交付。本次我们对惠新宸进行了一次采访,请他分享一下 PHP 框架和扩展的知识,以及 PHP 发展的情况。

InfoQ:请简单的介绍一下您自己,以及您目前所在团队的情况。

惠新宸:大家好,我是惠新宸,陕北人, PHP 圈很多朋友叫我鸟哥,趁着这个机会和大家解释下,我不是《Linux 私房菜》的鸟哥,我只是 IM 昵称叫”雪候鸟”,又因为在百度的时候,我在工程师中算年长,所以大家才开始这么叫。

目前我在新浪微博应用架构团队工作,我们应用架构团队主要致力于新浪微博 LAMP 的架构优化,以适应高性能和快速开发的需求。

微博每天 PV 数十亿,产生数 T 级别的数据, 处理过程中任何一个毫秒的优化,一个 byte 的减少,对我们都是意义重大,这个工作非常有意思也很有挑战, 到目前为止,我们团队已经通过一些不改动业务逻辑的优化方法,把微博首页的响应时间降低了 44%,TPS 提升了 78%。

另外,我们团队还负责技术提升和沉淀工作,这也是一项很有意思的工作,因为分享能让我们收获更多。

InfoQ:作为 PHP 语言官方开发组的唯一一位国人,请您谈谈加入这个组织之后的一些体会。

惠新宸:“唯一一位”这个称号肯定是暂时的,我相信未来会有更多国内开发者加入。我是去年 8 月份加入 PHP 开发组, 开发组是一个开源组织, 准确的说,我们应该被称为 Commiters(提交者),有很多不是开发组的同学为 PHP 提供 Patch。

加入以后我对如何运作一个开源项目有了一些新的体会, 其中让我感受最深的就是各种流程规范。大到发布一个版本的流程规范,小到一个新特性增加的流程规范,这些看似繁琐的规范,虽然一定程度上导致响应速度缓慢,但却保证了 PHP 在成长过程中,尽量不出大事故。

还有一个体会就是, 英语对于技术工作者来说真的很重要,我现在特别后悔本科时没好好学习英语, 虽然我阅读资料没什么问题,但是在日常交流的时候经常闹笑话,有个段子,就是开发组有个开发者说,要理解我说的话,需要像读正则表达式一样。

InfoQ:长期关注你博客的人都知道,你一直致力于 PHP 推广工作,你个人也在国内最大的几家互联网公司工作过,能谈谈 PHP 在国内的发展状况吗?

惠新宸:之前在我的博客上,我也分享过一个数字,就是全球前 100 万的站点中,有超过 70% 的站点是使用 PHP 开发的。在我看来,PHP 易学、易用、易扩展是它能如此流行的主要原因, 易学易用我就不多说,这里我想主要说一下 PHP 可扩展性。

PHP 提供了一套很强大的扩展构建系统, 使用这套扩展构建系统,我们可以很方便的扩展 PHP 功能,在 PECL 扩展库中,目前已经有超过 200 个标准扩展。

我在 2008 年开始做 PHP 扩展时,互联网上几乎没什么相关的中文资料,而现在我们看到,网上资料非常丰富。 越来越多的开发者尝试通过扩展 PHP 来解决他们遇到的问题,而 PHP 的开源精神,又或多或少影响开发者把这些扩展开源给社区,这些正是我认为 PHP 可以长期发展下去的主要动力。

InfoQ:您是开源框架 Yaf 的作者,请简单介绍一下开源框架 Yaf 的特点。

惠新宸:长久以来,关于 PHP 要不要使用框架有很多争论,比较常见的矛盾点是,使用框架后,开发速度变快但性能得不到保证。

Yaf 是为了解决这个矛盾点而开发的,它是一个用 PHP 扩展方式 (C 语言) 实现 PHP 的 MVC 框架,它最大特点是高性能 (相比于传统用 PHP 实现的框架),低资源消耗,同时又能保证快速开发。

Yaf 主要提供了路由,分发,自动加载,插件机制,以及一个简单高性能的视图引擎, 这些功能是每个 MVC 框架必备的,又具有一定不易变性, 所以适合用扩展来实现。

InfoQ:关于 Yaf 框架,您下一步有什么开发计划?

惠新宸:我的观点是,Yaf 未来应该朝做精做专的方向发展,比如 Yaf 2.0 与 Yaf 1.0 相比,并没有添加新功能,主要是架构重新设计和性能调优。 我不希望 Yaf 成为想要涵盖一切功能的”超大全”,我只希望它能为追求高性能的开发者提供一个简单高效及可扩展的工具,为”低碳”生活做做贡献。

另外,我想感谢喜欢 Yaf 的朋友们,Yaf 目前在社区有很多使用者,这点是我最初发布 Yaf 的时候没有想到的,一些很热心的朋友为 Yaf 提供 Windows 下的发布,建立了使用者交流论坛、QQ 群等,这些事情我有心但没有精力做,他们的热情是驱使我不断完善 Yaf 的动力,非常感谢这些朋友。

InfoQ:能否对 Zend、Yii、CakePHP 这几个 PHP 框架进行简单的优劣势分析?

惠新宸:这几个框架都是很优秀的 PHP 框架,我在以前的项目中使用过 Zend 和 Yii, 但可惜没有机会用 CakePHP, 说说我个人的理解吧。

Zend Framework 是 Zend 公司开发的 PHP 开发框架,它设计精良,功能强大,有很广的使用者,文档齐全,社区也比较活跃。它的代码写得规范工整,非常适合 PHP 开发者去阅读和学习。缺点就是稍显臃肿,性能偏低。

我对 Yii 印象最深刻的是 AR,在实际开发中非常方便, 并且提供了系统的自动生成工具,我个人非常喜欢 Yii。 然而 AR 的缺点也很明显,资源占用很大,不适合大数据量应用。

InfoQ:请推荐三个您开发的 PHP 扩展,为什么您推荐这三个扩展?

惠新宸:我写扩展开源出来的就 4 个,按照时间顺序是 Yaf,Lua,Taint,Couchbase。它们各自要解决的问题不同, 我简单介绍一下这几个扩展吧。

Yaf 前面介绍过了,这里不再重复。

Lua 是在 PHP 扩展中对 Lua 引擎的封装,支持在 PHP 中运行 Lua 脚本,并能与 Lua 脚本交换数据。

Taint 是一个 XSS,Sql&Shell injection 检测扩展,它主要是为了弥补一些静态检测脚本不能覆盖到的点。

Couchbase 是一个对 Couchbase Client 的封装,Couchbase Server 是一个高性能高实时性的 K-V 数据库。

顺便提一下,我们新浪微博应用架构团队,还在为新浪微博开发一些扩展,这些扩展是为微博解决一些实际问题, 等这些扩展可用性和稳定性得到验证之后,我们会开源出来回馈社区的。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。