0

0

php开源组织中国唯一成员鸟哥惠新宸

PHP中文网

PHP中文网

发布时间:2017-11-29 15:20:21

|

11585人浏览过

|

来源于php中文网

原创

近日有消息称,新浪微博平台与大数据部总架构师惠新宸(人称“鸟哥”)从新浪离职并加入链家,昨日这 一消息得到链家官方和其本人确认。据报道,惠新宸加入链家后将担任技术副总裁兼总架构师。infoq就这一职业变动采访了惠新宸,了解背后的故事以及他对程序员职业道路的一些经验心得。

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

从一个在网上搜PHP教程的初学者,到PHP开发组核心成员,惠新宸觉得整个过程就像“打怪升级”。和Java一样也被称为蓝领语言的PHP,在他看来恰恰是能够培养更多编程者的摇篮,而人人都能编程的时代,势必会产生更多能够推动技术进步的牛人。他在博客风雪之隅上分享关于PHP语言和Zend引擎相关的研究、技术、新闻。左手代码,右手诗。

01mt9JygBLUT.jpg

问:你是如何开始对编程感兴趣的?

立即学习PHP免费学习笔记(深入)”;

我第一次进行“编程”好像还是在小霸王学习机上。后来大学学的是计算机,研究生的时候负责学校校园化建设,主动或者被动地做了很多Web开发工作,包括当时学校很多二级部门的网站,校园BBS的维护等。 想想好像也没有那么一件事,或者一个契机说我就喜欢上编程了。就感觉很自然地就做了这个行业,也没有觉得不喜欢,就这么做下来了。

问:你是如何喜欢上PHP的?你又是如何成为PHP开发组核心成员的?

当时在研究生的时候要做一个网站,完全不会的情况下就去网上搜,刚好搜到一个PHP的教程,教怎么做一个简单的网站,于是试着照着做了一下,发现无论从安装、部署(当时还没有那种集中化部署工具,不过也有很多教程教怎么部署LAMP)、编写代码,测试都很方便,语法还和C语言很像,甚至很多API的名字也和libc API的一样。于是就这样开始了和PHP的不解之缘。

应该是在2011年吧,那个时候为百度开发了Ap(Yaf的前身项目),当时在百度内部用的还不错,于是我想着要贡献到PECL上去,修改了一些以后,改名为Yaf(Yet another framework,这个名字也是有点自嘲的意思,因为PHP的框架非常多),就发邮件到PHP的邮件组,因为英语比较烂,所以过程还是比较曲折,好在当时Pierre Joye帮助我了很多,让Yaf进入了PECL。

另外在提交Yaf之前我其实一直都在研究PHP的源代码,所以也提交了不少Bug和Fix,比如我记得有一天中午,Rasmus(PHP之父)在IRC上说发现一个Bug,我差不多5分钟后就给出了Fix。

等慢慢的和一些人熟悉,得到了大家的信任以后,我就发起申请,之后就获得了PHP核心代码的提交权限,参与到PHP的直接开发和Bug修复中,成为了开发组的一员。

至于说核心么,那是慢慢积累来的,其实也是一个互信的过程。如果你的工作大家认可,那么就会尊重你的意见。我慢慢地和Dmitry Stogov变的熟了起来,得到了Zend核心部分的提交权限,提交了很多核心Bug的修复和新特性,再后来成为了Zend外聘顾问,慢慢成为了Core Developer。

听起来好像有点打怪升级的感觉吧。

问:你是在什么样的契机下开发了Yaf?当时百度是如何支持Yaf开发的?

在Yaf之前,关于使用不使用框架其实一直有一个经典的争论就是:“使用框架会降低性能,而不使用框架会降低开发效率。”

当时百度内部的框架很多,包括开源的Yii,ZF之类的,也包括有的团队自己写的。这样有一个问题就是类库,一些周边设施没有办法互通。

还有一个原因就是,很多框架作者把框架发布出去以后,会发现不同的人会对框架做各种修改,导致时间久了,一个框架发出去,就变成了各种变种,后续统一升级也变得不可能。

所以,我决定要用PHP扩展实现一个框架来解决这些问题,当然在写这个扩展之前其实也不是很有信心,不知道采用扩展能带来多大的性能提升。好在最后的结果是很好的。

问:为什么选择用C语言来写Yaf?

PHP是C语言写的,所以他的扩展也是采用C语言来写的,于是就选择了C语言来写Yaf。

问:为什么会离开百度,来到新浪微博?

这个其实原因很多,比如当时在百度是T7了,业务上的事情参与得少了,感觉自己好像没有那么多事情要做,有点虚度的感觉。

另外,我当时在百度的商业搜索部,并不直接接触访问量大的系统,所以也希望找个大的平台再锻炼下,而微博刚好就是这样一个平台。

来了微博以后,确实接触到了很多之前没有遇到过的挑战,也感觉自己的知识有了更大的舞台可以发挥。

问:你现在在新浪微博具体负责的工作是什么?

我现在在微博技术部,带着一个基础服务小组,我们主要的工作也分阶段,前两年的主要工作就是做微博LAMP的性能优化,包括各种基础框架,工具研发,环境优化,规范制定等等。

这两年,微博的LAMP架构已经趋于稳定,整体性能也有几倍的提升。我们也有了一套自己的高性能LAMP整体解决方案。所以LAMP优化的工作少了一些。现在主要精力都放在基础设施的研发上,比如缓存中间层,转码服务,通信平台等等。

问:PHP7(PHPNG)有没有把新浪微博平台使用PHP的需求和痛点当做重要的反馈?

这个当然是有的,自从我加入开发组以来,和不少的其他成员有过类似的争论就是:我认为性能很重要,而有人会认为新特性很重要,那么当一个新特性影响性能的时候我们就会发生争执。

我很偏执于性能提升,这也是为什么我后来和Dmitry Stogov合作比较多的原因,因为他也特别关心性能。

ColorMagic
ColorMagic

AI调色板生成工具

下载

而我关心性能的主要原因就是,对于每1%的性能提升能给微博这样的国内最大的LNMP平台带来的价值我有很真实的体会。目前我们微博的整体性能虽然相比两年前有了很大的提升,但是我认识到在不影响开发效率的情况下,进一步的提升只能依赖于语言、环境的性能提升。所以这部分也就是微博对PHP的需求。

PHP7在Wordpress上相比于5.6,有100%以上的真实性能提升(QPS),我相信明年,等PHP7发布以后,我们微博的整体LAMP平台的各项业务也可以得到100%的性能提升。

问:你参与PHP7(PHPNG)开发的流程是什么样的?你是如何和其他开发组成员合作的?

PHPNG当时是一个秘密的项目,最初的参与者只有Dmitry和我,我还记得是今年开春的时候,当时我们做的基于PHP5的JIT项目因为效果不理想所以搁置了,大家都比较郁闷。

Dmitry说他有个想法,把ZVAL重新设计下,压缩一下大小来减少内存占用。然后我们俩个人讨论了一下,因为其实我们每天都会有各种想法,所以当时也只是觉得:嗯,这个想法也许能Work。但还不是很有信心。

当时的主要想法是赶紧做出一个能运行的原型来测试下效果。这个过程中我们主要是讨论想法,然后各自实现要做的部分,再合并。

合作的主要工具还是靠Skype,不过因为他在圣彼得堡,和我们有时差,所以也会借助于邮件交流,通过Github来Review代码。

等到后来项目差不多有了结论,我们发现,“嘿,这个主意不错,起作用了”。然后就公开了。之后就变成了正常的大家协作模式,有想法就提交RPC,提交Patch,投票,大家Reivew,然后合并。

问:PHP7到目前为止已经增加或减少了哪些特性?在发布之前,还将如何提升性能?

有很多,除了PHPNG这个分支主要提供性能提升以外,我们还有AST(抽象语法树)的支持,Uniform Variable syntax,64bits length string supports,一些新的语法糖,以及最近的Native TLS等。

PHP7将在2015年10月正式发布, 在这之前,我们还有一些想法要尝试,比如使用zend_array直接替代Hashtable;比如通过指定函数重新分节,排序来减少iTLB miss;比如把JIT的一部分优化手段(类型推倒)引入到PHP中,配合一些类型专有的OPCodeHandler来提速;再比如进一步提高代码数据局部性减少Cache miss等等。

当然,我们还有一个并行在做的JIT项目,只不过我很担心这个项目能不能在PHP7发布的时候准备就绪。

问:PHP的新版本将跨过PHP6直接升级为PHP7吗?为什么?

这个主要的原因是,当年PHP有过一个开发版本叫做PHP6,但后来这个版本失败了,没有发布。所以,这次的版本也就应该是PHP7了。

问:Facebook发布的语言Hack和PHP是什么关系?Hack的目的是要取代PHP吗?这两种语言相比各自有什么优势?

没什么太大的关系,Hack is not PHP。要说取代的话,我相信他们(Facebook)可能会有这样的想法吧,不过这个要看社区接受不接受了。

对于Hack我不是特别熟悉,不好具体评价。

问:有人认为由于PHP易于学习,门槛低,所以导致一些并不适合编程的人涌了进来,你怎么看待这种观点?

这个观点我实在不敢赞同。我在本科毕业的时候,也尝试找了一些开发工作,面试了几个单位,都被拒了,也许在当时面试我的那些人眼里,我就是一个不适合编程的人吧。

但是PHP因为门槛低,让人可以很快看到自己“编程”的成果,会对新手产生一个正向反馈激励的作用,让有兴趣的人变得更有兴趣。 而编程的人越多,那么产生大牛、对整个技术进步做出贡献的人出现的概率也越大。

并且,未来的编程语言一定是朝着易用性发展,进一步降低编程的门槛,也许会有一天人人都能编程也说不定呢!

问:一名合格的PHP工程师的知识结构是怎样的?

我记得以前有一句话说:“ PHP工程师都是万金油”,其实这句话不仅仅对PHP工程师适用,应该对所有的工程师都适用。

知识结构要很广。Web开发涉及的技术点是比较多的,HTML、CSS、JS、SQL这些以外,还要懂得一些Nginx、Linux、Mysql的配置、维护、排错常用的办法,这些都应该懂一些。

问:除了技术能力之外,你在面试的时候还会注重什么?

我会特别注意思维清晰、沟通、谈吐。其实说穿了就是未来一起共事的话,会不会有障碍,以及成长潜力是否大。

问:曾经的phpe.net站长陈伯乐现在在卖男人袜。你对未来的打算是什么?会一直都是一位coder吗?

其实我是一个很懒的人,从来不会考虑得很远,今朝有酒今朝醉。所以对未来其实我也不是很清楚,我只是觉得现在我还是喜欢编程,喜欢通过自己的工作让大家受益并获得社区的赞誉,我觉得这样挺好的,我会继续做下去的。

也经常有人问, 为啥别人叫你鸟哥啊?  

曾经年少善感的时候, 我的QQ IM昵称叫做"雪候鸟",  这是熊天平的一首歌名, 后来我去了百度以后, 可能因为我算是比较大?  慢慢的就不知道怎么叫开了.

其实最初的时候我是抗拒的, "鸟人"毕竟不是什么好词, 但后来叫的人越来越多, 也就无所谓了.

那么, Linux私房菜的鸟哥呢, 是台湾人, 蔡德明,为何取名“鸟哥”,也是台湾鸟哥被常问到的问题。台湾鸟哥自述说,因姓“蔡”,在国中之前同学称呼为“菜头”,高中以后被称呼为“菜鸟”,上了大学就沿用“菜鸟”这个称呼,到了大三以后,社团活动多,经常被学弟学妹称呼为“菜鸟学长”,鸟哥觉得两者不搭,便自改为“鸟哥”,于是这一名字便流传了下来,直至被越多越多的人熟悉和传播。至于为何使用“VBird”作为网络ID,鸟哥自嘲说当初不懂事,以为“菜鸟”就是“蔬菜之鸟”(“蔬菜”英文为“Vegetable”).  现在,鸟哥已经成为每个Linux爱好者所熟知的姓名了。

所以, Linux私房菜不是我写的,  并且Linux私房菜也不是教你怎么做鱼香肉丝的!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

16

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

23

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

75

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

95

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

218

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

420

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

168

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

222

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

33

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.4万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号