Table of Contents
写在 PHP7 发布之际一些话
Home php教程 php手册 写在 PHP7 发布之际一些话

写在 PHP7 发布之际一些话

Jun 13, 2016 am 08:50 AM
php7

写在 PHP7 发布之际一些话

做开源也有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!

 

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What should I do if the plug-in is installed in php7.0 but it still shows that it is not installed? What should I do if the plug-in is installed in php7.0 but it still shows that it is not installed? Apr 02, 2024 pm 07:39 PM

To resolve the plugin not showing installed issue in PHP 7.0: Check the plugin configuration and enable the plugin. Restart PHP to apply configuration changes. Check the plugin file permissions to make sure they are correct. Install missing dependencies to ensure the plugin functions properly. If all other steps fail, rebuild PHP. Other possible causes include incompatible plugin versions, loading the wrong version, or PHP configuration issues.

How to solve the problem when php7 detects that the tcp port is not working How to solve the problem when php7 detects that the tcp port is not working Mar 22, 2023 am 09:30 AM

In php5, we can use the fsockopen() function to detect the TCP port. This function can be used to open a network connection and perform some network communication. But in php7, the fsockopen() function may encounter some problems, such as being unable to open the port, unable to connect to the server, etc. In order to solve this problem, we can use the socket_create() function and socket_connect() function to detect the TCP port.

How to install mongo extension in php7.0 How to install mongo extension in php7.0 Nov 21, 2022 am 10:25 AM

How to install the mongo extension in php7.0: 1. Create the mongodb user group and user; 2. Download the mongodb source code package and place the source code package in the "/usr/local/src/" directory; 3. Enter "src/" directory; 4. Unzip the source code package; 5. Create the mongodb file directory; 6. Copy the files to the "mongodb/" directory; 7. Create the mongodb configuration file and modify the configuration.

How to install and deploy php7.0 How to install and deploy php7.0 Nov 30, 2022 am 09:56 AM

How to install and deploy php7.0: 1. Go to the PHP official website to download the installation version corresponding to the local system; 2. Extract the downloaded zip file to the specified directory; 3. Open the command line window and go to the "E:\php7" directory Just run the "php -v" command.

PHP Server Environment FAQ Guide: Quickly Solve Common Problems PHP Server Environment FAQ Guide: Quickly Solve Common Problems Apr 09, 2024 pm 01:33 PM

Common solutions for PHP server environments include ensuring that the correct PHP version is installed and that relevant files have been copied to the module directory. Disable SELinux temporarily or permanently. Check and configure PHP.ini to ensure that necessary extensions have been added and set up correctly. Start or restart the PHP-FPM service. Check the DNS settings for resolution issues.

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

Which one is better, php8 or php7? Which one is better, php8 or php7? Nov 16, 2023 pm 03:09 PM

Compared with PHP7, PHP8 has some advantages and improvements in terms of performance, new features and syntax improvements, type system, error handling and extensions. However, choosing which version to use depends on your specific needs and project circumstances. Detailed introduction: 1. Performance improvement, PHP8 introduces the Just-in-Time (JIT) compiler, which can improve the execution speed of the code; 2. New features and syntax improvements, PHP8 supports the declaration of named parameters and optional parameters, making functions Calling is more flexible; anonymous classes, type declarations of properties, etc. are introduced.

Why does an error occur when installing an extension using PECL in a Docker environment? How to solve it? Why does an error occur when installing an extension using PECL in a Docker environment? How to solve it? Apr 01, 2025 pm 03:06 PM

Causes and solutions for errors when using PECL to install extensions in Docker environment When using Docker environment, we often encounter some headaches...

See all articles