阅读更多

4顶
2踩

编程语言

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

2015-12-02 17:04 by 副主编 mengyidan1988 评论(3) 有6592人浏览
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错误.

  • Navicat连接Mysql报错原因及解决办法

    这是本人在工作学习中遇到的问题以及解决办法,如有问题,麻烦请评论或者留言 通常产生的原因有:1、navicat连接mysql服务的用户的访问权限受限,2:centos7 防火墙机制不允许3306端口被访问 1、针对第一种情况,我们可以查看mysql 的用户访问权限, 1.1、使用mysql -uroot -p 登陆连接到MySQL服务,并输入密码 1.2、 将mysql服务切换到mysql数据库上,执行 use mysql 指令 1.3、查看mysql 服务的用户信息(用户名,可访问i

  • 关于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),为什么会有这样的错误呢...

  • 一个关于List的IndexOutOfBoundsException异常记录

    下面的代码是一个关于List的经典问题,平常工作中,我们对空指针会比较警惕,稍不留意可能就会写出来下面的问题代码。 List<Integer> list = new ArrayList<>(); Integer a = list.get(0); 上面的代码运行之后会报下面的数组越界的异常 Exception in thread "main" java.lang.In...

  • 出现list index out of bounds(0)?

    出现list index out of bounds(0)? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiNetwork/html/delphi_200612312048352.html 运用Socket编写了一个客户端,不过只能连上和接收服务器的信息,不知道为何不能发送信息,而且在退出时出现这个错误list i...

  • list index out of bounds_数组链表和List部分理解总结

    数组访问快的原因:数组在内存中的空间是连续的,因而可以直接通过数组的首地址 计算出 需要访问的位置,直接拿到元素或对象引用链表 增删快原因:这是相较于数组而言的,对于数组而言,元素的新增 删除 可能会伴随后面的元素向前移动的问题,而数组上的位置移动,是需要一个个复制过去。而链表的新增删除,在不考虑元素定位的情况下,只需要修改最多三个节点(包含元素本身)的引用指向而已。链表随机访问慢的原因:相较于数...

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

    ...

  • 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}....

Global site tag (gtag.js) - Google Analytics