PHP7通过了yum源码安装和性能测试:速度提升了近七倍
PHP7和HHVM
说到PHP,肯定有人会说它是世界上最好的编程语言。仅就受欢迎程度而言,目前全球超过 81.7% 的服务器后端使用 PHP,为全球超过 2 亿个网站提供支持。 PHP7正式版于上月初发布,迎来了自2004年以来最大的版本更新。 PHP 7.0现已正式发布。
对于普通PHP网站来说,主要是IO密集型,瓶颈是MySQL数据,这并不能体现PHP性能的劣势。但在密集计算方面,比C、C++、Java等静态编译语言差几十甚至上百倍。如果使用symfony等比较复杂的框架来开发PHP,程序的性能会明显下降。事实上,PHP最初并不是为了解决计算密集型应用场景而设计的。我们大致可以理解为PHP牺牲执行效率来提高开发效率。
但是PHP更流行。新浪微博、Facebook 等大型网站上的大部分程序都是用 PHP 编写的。也就是说,在这样的大型应用中,PHP的低性能就变得明显了。 Facebook 的大部分早期代码都是使用 PHP 开发的。然而,随着业务的快速发展,PHP执行效率成为一个日益明显的问题。为了优化执行效率,Facebook于2008年开始使用PHP执行引擎HipHop。它最初的设计目的是将 Facebook 的大量 PHP 代码转换为 C++,以提高性能并节省资源。使用 HipHop,PHP 代码的性能得到了数倍的提升。后来Facebook开源了HipHop平台,并逐渐发展成今天的样子。 Zend Engine,HHVM用来取代 PHP 本身的引擎。据说性能提高了 70%。当然,PHP官方也意识到PHP最大的缺点,这也是他们启动PHP7项目的原因,该项目主要重构了Zend Engine。
PHP7最显着的变化就是性能的大幅提升,已经接近Facebook开发的HHVM PHP执行引擎。在WordPress性能测试中,速度比5.6版本快2-3倍,大大减少了内存占用。 PHP7的语言也发生了变化,比如增加了返回类型声明以及增加了一些新的保留关键字。出于安全原因,删除了 PHP 安全模式、添加了超级按钮等。新版本不仅支持64位,还包含最新版本的Zend引擎。事实上,PHP7在现实场景下的性能其实可以与HHVM相媲美,甚至在某些场景下超越HHVM。但HHVM的运维比较复杂,并且采用多线程模型。这意味着如果一个线程崩溃,整个服务就会冻结并且不会自动重新启动。此外,它使用 JIT,这意味着它应该在重新启动后进行预热。如果不进行预热,性能会更差。另外,多线程模型调试困难,非常不适合追求稳定性的Web服务。
YUM 安装 PHP7
如果您想使用最新版本的 PHP,则必须使用 REMI 源。 Remi 存储库是一个 Linux 存储库,包含最新版本的 PHP 和 MySQL 软件包,并由 Remi 维护。获得源代码后,您可以使用 YUM 安装或升级较新版本的 PHP 和 MySQL。
安装最新的Remi源自动安装程序
# CentOS 6 / RHEL 6yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm# CentOS 7 / RHEL 7yum install http://rpms .famillecollet.com/enterprise/remi-release-7.rpm
安装 PHP 相关组件。以下是可在生产环境中使用的标准安装。
$ yum --enablerepo=remi,remi-php70 installphp \php-cgi \php-cli \php-fpm \php-common \php-devel \php-mysqlnd \php-mysql \php-sqp-3 mbstring \php-msgpack \php-mcrypt \php-bcmath \php-gd \php-xml \php-ldap \php-xmlrpc \php-opcache \php-curl \php-json \php-odbc \php-pdo php- bz2 \php-xml \php-ftp \php-imap \php-snmp \php-redis \php-memcached
查看 PHP 版本
$ php -vPH9P (7 cli) 构建:2016 年 7 月 20 日18:08:08) (NTS)
PHP-FPM
$ 服务启动 php-fpm start
至此 PHP7.0 已安装 如果 PHP 扩展需要使用功能像redis、memcached等,那么你只需要使用YUM安装如下:
$ yum --enablerepo=remi,remi-php70 install php-redis php -memcached
如果可以的话在REMI或EPEL源码中找不到你需要的扩展模块,你需要手动编译安装,这也很容易。
另外,使用 php -m 命令查看 PHP 模块信息。 ? 4核CPU、4G内存、Centos 6.5操作系统。
首先说一下关于GCC编译器的一些建议。按照鸟哥的建议,使用另一个翻译器。我们建议使用GCC 4.8或更高版本,因为只有GCC 4.8或更高版本的PHP才能使全局寄存器支持opline和execute_data,这会带来大约5%的性能提升。
写一个程序(网上简单的测试方法):
第一段创建一个60万个元素的数组,找到key,判断key是否存在。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。