阅读更多

4顶
2踩

编程语言

转载新闻 鸟哥:写在PHP7发布之际一些话

2015-12-02 17:04 by 副主编 mengyidan1988 评论(3) 有6539人浏览
php



做开源也有4, 5年的时间了, 从最初的Yaf, 到今天的PHP7, 我参与的项目越来越多, 使用我代码的用户也越来越多, 明天就要发布的PHP7, 绝对是我从事开源以来的一个最重要里程碑, 我应该纪念一下今天, 就让我稍微感性一次吧.

PHP7项目开始于去年春节的时候, 那个时候我们基于PHP-5.5的Opcache JIT项目基本上因为无法得到期望的结果而搁置了, 一些在做JIT的时候收集到的信息让我们认识到, 基础部分还不够好, 并不能很好的支持JIT, 所以在2014年2月左右吧, 我们开始了重构项目, 当时的希望是说通过重构, 能得到30%以上的性提升, 为将来的进一步优化提供基础.

那时还没有给这个项目起名字, 我们只是试试, 那几个月是我最忙碌的时刻, 因为只有我们俩个人在这个项目中, 我还因为自身微博的工作也比较忙, 所以基本上只晚上的时间都扑在了上面. 不过好在, 我和另外一个人有5个小时的时差, 所以很多工作可以串行起来.

随着项目的推进, 我们惊喜的发现性能提升比我们想象的还要大, 到4月的时候另外一个人也加入了进来, 到5月基本上已经完成了大部分的工作, 于是我们公布了这一个成果, 定名为PHP NG项目.

但我没想到的是, 我们遇到了社区很大的阻力, 因为在我们秘密开发PHP NG的时候, 社区还并行着一个主要是微软的同学们发起的64位支持的项目,  当我们公开PHP NG的时候,  他们质疑说, 突然拿着这么大的一个Patch出来, 没有其他人懂, 后续如何维护, 如何和64位支持的分支合并等, 继而反对采纳PHP NG分支. 当时我是非常沮丧的, 持续好久的争吵也让我感到非常疲倦, 最后因为我实在无法排遣, 一腔怒火的也不管自己蹩脚的英文, 在邮件组回了一封吐槽邮件, 呼吁大家珍惜这个性能提升分支.

还有个很好玩的插曲,  PHP NG的支持者很多, 他们也对这样的争吵很郁闷, 某天, 有一些支持者就在PHP官网上发布了这样的一个新闻: http://php.net/archive/2014.php#id2014-05-27-1 其中写到: "When we aren't looking for pictures of kittens on the internet, internals developers are nearly always looking for ways to improve PHP, a few developers have a focus on performance.", 但当天反对者们就说, 不行, PHP NG还没有被接纳, 要求删除这篇文章,  好在考虑到文章已经发出去了, 最后就在首页上下掉了这个文章的入口, 只是在存档中保留了内容. 很多媒体都感受到了这次的乌龙.

争执不下之后, 不得已, 我们只能发起投票, 来决定是否接纳PHP NG,  好在, 最后投票的时候, 绝大部分人都支持了PHP NG项目, 并决定以PHP NG为基础, 开始我们的新版的PHP的开发. 当时还没有确定用PHP6还是PHP7版本号(后来投票决定PHP7).  我现在经常会说这次经历, 让我感受到了"民主之痛".

之后的事情大家就都能看到了, 在这近两年的时间里,   各种新特性的加入, 性能的持续提升,  很多以前不合理的地方改进等等, 都加入到了PHP7, 让PHP7越来越丰满. 从最底层的ZVAL的改变, 到标量类型提示, 从最初的30%的性能提升, 到现在超过100%的性能飞跃, 每一处变化都让人值得期待. 然后经过几次不情愿的跳票, 终于, 到今天, 这一切都将呈现于你面前.

有的时候我会想, 我是幸运的, 幸运在一直有机会做没做过并且有挑战的事情,  幸运在一直能感受到自己的成长, 幸运在所做的大部分努力, 终究看到了效果, 得到了回报. 也衷心的希望我的幸运可以激励更多的人参与到开源中来.

未来, 我们还会一如既往的致力于提升PHP的性能, 提升PHP的品质, 让更多的PHPer们, 可以持续享受到透明的提升.

最后, 做开源这么久, 带给了我很多的收获, 我要谢谢大家, 谢谢这些鼓励, 也谢谢那些善意的谬赞.

PS: 本来想等到PHP7发布以后再发的, 但是想到可以为它的到来造势, 就先发布罢. PHP7 目前已经可以下载, 官方宣布考虑到时差问题, 后天早上来看吧. 目前下载地址:  http://php.net/get/php-7.0.0.tar.gz/from/a/mirror enjoy!

谢谢!

本文转自鸟哥的微信公众号:风雪之隅
  • 大小: 17.2 KB
来自: 风雪之隅
4
2
评论 共 3 条 请登录后发表评论
3 楼 shuhen2011 2016-04-03 17:11
我去!微软的在php社区里这么强势?
2 楼 duguzhiyang158 2015-12-04 17:13
1 楼 mangguo 2015-12-03 09:30
写过入门的东西,小白可以看看:http://www.hubwiz.com/course/559b6603a164dd0d75929cc9/

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • List index out of bounds(-1)错误解决办法

    解决办件运行弹出List index out of bounds错误.

  • Linux问题及解决方法

    1、发现 3 个已存在的 RPM 数据库问题, 'yum check' 输出如下 xxx是xxx副本 .... 解决办法 yum remove imsettings-gsettings.x86_64 yum install imsettings-gsettings.x86_64 2、bash usrlocalbinrar libld-linux.so.2 bad ELF interpreter 没有那个文件或目录 是因为64位 系统中安装了32位程序 解决方法: yum install glibc..

  • cenos7排错之yum依赖错误处理:清理重复的rpm包

    使用fedora/redhat/centos系列的linux发行版,有时会因为某些非正常原因(异常断电居多)造成yum/rpm错误,表现是在运行yum时出现依赖包错误,仔细查看其相关包,会发现这些包是矛盾的版本号依赖。这种情况下,通常就是本机rpm数据库里记录了某个rpm包多个版本(可能事实上只装了一个版本),通过rpm -q {包名} 会查出来多个版本,例如[root@fscfedora feng

  • yum install 时候提示错误 xxx 是 xxx 的副本

    执行yum install命令的时候发现这个错误。。#yum install openssh 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * epel: ftp.cuhk.edu.hk 正在解决依赖关系 There are unfinished transactions remaining. Y

  • 解决Centos下的软件源冲突的问题,包括提示发现rpm问题,"depsolving loop limit reached"等问题。

    1.package-cleanup --cleandupes命令 在命令行界面输入该命令,某种程度上可以解决这类问题,但貌似有一点限制,其实会发现大部分问题无法解决。经常是提示说"depsolving loop limit reached"问题,下面一堆"xxx 是 xxx 的 副本",总之看的你头疼,成功了就庆祝一下吧。 2.rpm -e $(rpm -q --qf="%{NAME}....

  • IndexError: list index out of range的错误原因及解决方案

    ...

  • 关于List index out of bounds(0)的问题

    关于List index out of bounds(0)的问题 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061223203333140.html 运行输入数据按确定按钮后,弹出对话框说List index out of bounds(0),为什么会有这样的错误呢...

  • 什么是yum

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 具体介绍可参看 https://baike.so.com/doc/5538966-5755613

  • 明明没有越界,却提示index out of range

    既然提示了index out of range ,那就是越界了。我估计很多人遇到这个问题都觉得很奇怪,可能都是操作着从文件里面读出来的数据吧。文件有很多行数据,并不能保证每一行都一定有数据,也不能保证每一行的数据都是那么多。所以,在对文件的某一行进行split的时候,可能length确实没有那么长。 解决办法是,在操作的时候判断一下吧,如果split之后,长度有那么长,再进行后续操作,不然每次拿...

  • Index Out of Bounds 错误解决方案

    SQL Azure Migration Wizard v3.8.6, Index Out of Bounds http://sqlazuremw.codeplex.com/discussions/274112 转载于:https://www.cnblogs.com/RobotTech/archive/2012/04/20/2459257.html

  • node-v5.2.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • node-v4.4.0-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • node-v5.9.1-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • node-v4.8.3-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics