鸟哥谈PHP的架构与未来发展

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

时间: 2024-10-13 06:08:55

鸟哥谈PHP的架构与未来发展的相关文章

专访鸟哥:虚拟计算机教室建设中的故事

作为在台湾方面比较有影响力的开源推广者,鸟哥一直致力于 Linux 研究.开源社区维护.虚拟计算机教室方面的开发等工作.可能大陆方面的开源粉对鸟哥的了解大多是通过<鸟哥的 Linux 私房菜>这本书-- 鸟哥很热情,很有童趣,这可能跟他有两个宝贝女儿有关吧.以下是 CODE 邮件采访鸟哥的整理文章. 生活很有趣,工作很有压力 最近的生活除了家庭.学校教育之外,鸟哥觉得似乎也没有什么特别值得提的地方.家庭方面,有两个小女儿果然不一样,每天有孩子的围绕,日子都过得很新鲜! 鸟哥跟我们分享了关于孩子

鸟哥的 Linux 私房菜(服务器) 第三章 局域网络架构简介 第四章 连上 Internet

鸟哥的 Linux 私房菜(服务器) 第三章 局域网络架构简介 第四章 连上 Internet [TOC] 3.1 局域网络的联机 3.1.1 局域网络的布线规划 3.1.1-1 Linux 直接联网-与 PC 同地位 3.1.1-2 Linux 直接联网-与一般 PC 分开网域 3.1.1-3 Linux 直接联网-让 Linux 直接管理 LAN 3.1.1-4 Linux 放在防火墙后-让 Linux 使用 Private IP 3.2 本书使用的内部联机网络参数与通讯协议 3.2.1 联

(整理)ubuntu 的 相关知识(来自 鸟哥的私房菜)

1. Linux 文件权限概念 $ ls 察看文件的指令 $ ls -al 出所有的文件详细的权限与属性 (包含隐藏档,就是文件名第一个字符为『 . 』的文件) 在你第一次以root身份登入Linux时, 如果你输入上述指令后,应该有上列的几个东西,先解释一下上面七个字段个别的意思: 图2.1.1.文件属性的示意图 第一栏代表这个文件的类型与权限(permission): 这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字符:(图2.1.1及图2.1.2内的权限并无关系) 图2

鸟哥的私房菜的网络基础篇,好久没看了,重新看了一下子网划分简单很多

第二章.基础网络概念 目录 第二章.基础网络概念 1 2.1 网络是个什么玩意儿 2 2.1.1 什么是网络 2 2.1.2 计算机网络组成组件 5 2.1.3 计算机网络区域范围 6 2.1.4 计算机网络协议: OSI 七层协定 7 2.1.5 计算机网络协议: TCP/IP 11 2.2 TCP/IP 的链结层相关协议 12 2.2.1 广域网使用的设备 13 2.2.2 局域网络使用的设备-以太网络 14 2.2.3 以太网络的传输协议:CSMA/CD 16 2.2.4 MAC 的封装格

鸟哥服务器架设——NTP服务器搭建

NTP服务器搭建 一.NTP通信协议 实际上,Linux操作系统的计时方式主要从1970年1月1日开始计算总秒数,因此,如果你还记得date这个命令的话,会发现他有个+%s的参数,可以去的总秒数,这个就是软件时钟.但是,如同前面说的,计算机硬件主要是以BIOS内部的时间为主要的时间依据(硬件时钟),而偏偏这个时间可能因为BIOS内部芯片本身的问题,而导致BIOS时间与标准时间(UTC)存在一点点的差异.所以,为了避免主机时间因为长期运行而导致时间偏差,进行时间同步(synchronize)的工作

PHP 鸟哥:我也曾经是“不适合”编程的人

网名:雪候鸟,大家尊称鸟哥,惠新宸 @Laruence, 是国内最有影响力的 PHP 技术专家,PHP 开发组核心成员,PECL 开发者,Zend 公司外聘顾问.他曾供职于雅虎,百度,现在新浪微博任平台及数据部总架构师兼首席 PHP 顾问.惠新宸是 PHP NG 核心开发者,PHP5.4,5.5 的主要开发者.作为 PECL 开发者贡献了 Yaf ,Yar 以及 Yac.Taint 等多个优秀开源作品,同时也是 APC,Opcache,Msgpack 等项目的维护者. 从一个在网上搜 PHP 教

【鸟哥的Linux私房菜】笔记1

Linux是什么 从操作系统与cpu架构关系到linux  Richard Mathew Stallman GPL 关于GNU计划 Linux的发展 Linux的核心版本 Linux的特色 Linux成立的核心网站 GNU所开发的几个重要软件 Linux distributions发行者网址 = w= 1.Linux是什么? 我们知道计算机是由一堆硬件构成的 为了有效控制这些硬件资源,于是就有了操作系统 为了让软件开发人员更容易开发,所以操作系统给开发人员提供了一系列接口 Linux就是这样一套

《鸟哥的Linux私房菜-基础学习篇(第三版)》(四)

第3章 主机规划与磁盘分区        1. Linux与硬件的搭配        首先谈了认识计算机的硬件配置. 然后谈了选择与Linux搭配的主机配置.在Linux服务器中,内存的重要性比CPU还要高得多. 最后说了各硬件设备在Linux中的文件名.在Linux系统中,几乎所有的硬件设备文件都在/dev这个目录内. 1)IDE硬盘:/dev/hd[a-d] 2)SCSI/SATA/USB硬盘:/dev/sd[a-p] 3)U盘:/dev/sd[a-p] 4)软驱:/dev/fd[0-1]

&lt;鸟哥的Linux私房菜 第二版 读书笔记 &gt;

2017年4月9日22:23:40 <鸟哥的linux私房菜> 1.操作系统 1.1什么是操作系统呢? 操作系统是用来管理计算机的软硬件资源,用来方便用户使用的程序的集合.让用户不必要在了解硬件的作用只需要简单的操作就可以完成复杂的计算问题. 1.2Kernel Kernel(核心),是计算机操作系统的内核,是操作系统的核心部分,也是操作系统最底层的东西,它掌管着整个硬件资源的工作状态. 核心管理的事项主要有:系统调用接口(System Call Interface).进程控制(Process