热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

centos6怎么通过光盘安装yum源_PHP7通过yum源安装及性能测试

PHP7与HHVM提到PHP,肯定会有人说这是世界上最好的编程语言。单说流行程度,目前全球超过81.7%的服务器后端都采用了PHP语言,它

b876e7307e4916600426649a25f67ca8.gif

8f7f0c756112fbbd81042ebbc952e121.png

PHP7与HHVM

提到PHP,肯定会有人说这是世界上最好的编程语言。单说流行程度,目前全球超过81.7%的服务器后端都采用了PHP语言,它驱动着全球超过2亿多个网站。上月初PHP7正式版发布,迎来自2004年以来最大的版本更新。现在PHP 7.0正式发布。

对于普通的PHP网站,主要是IO密集型的,瓶颈在MySQL数据之上,体现不出来PHP性能的劣势。但在密集计算方面比C、C++、Java这种静态编译型语言差几十倍甚至上百倍。如果在PHP开发中使用了比较复杂的框架,如symfony,程序性能会明显下降。事实上,PHP语言最初的设计,就不是用来解决计算密集型的应用场景。我们可以这样粗略理解为,PHP为了提升开发效率,而牺牲了执行效率。

但PHP比较流行,如新浪微博、Facebook这种大型网站大部分程序都是使用PHP写的,也就是在这种大规模应用下,PHP性能低下就显现出来了。Facebook早期的很多代码是使用PHP来开发的,但是,随着业务的快速发展,PHP执行效率成为越来越明显的问题。为了优化执行效率,Facebook在2008年就开始使用HipHop,这是一种PHP执行引擎,最初是为了将Fackbook的大量PHP代码转成 C++,以提高性能和节约资源。使用HipHop的PHP代码在性能上有数倍的提升。后来,Facebook将HipHop平台开源,逐渐发展为现在的HHVM。HHVM用来替换PHP自身使用的引擎Zend Engine。据说性能提升了70%。当然PHP官方也知道PHP最大的短板,于是推出了PHP7项目,主要是重构了Zend Engine引擎。

PHP7最显著的变化就是性能的极大提升,已接近Facebook开发的PHP执行引擎HHVM。在WordPress基准性能测试中,速度比5.6版本要快2~3倍,大大减少了内存占用。PHP7在语言上也有一些变化,比如添加返回类型声明、增加了一些新的保留关键字等。在安全方面,去除了PHP安全模式,添加魔术引号等。不仅如此,新版还支持64位,而且包含最新版Zend引擎。其实PHP7的在真实场景的性能确实已经和HHVM相当,在一些场景甚至超过了HHVM。但HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导致crash了, 那么整个服务就挂了, 并且它不会自动重启。另外它采用JIT, 那么意味着, 重启以后要预热, 没有预热的情况下, 性能较为糟糕。并且多线程模型调试困难, 这对于追求稳定来说的Web服务来说, 是非常不适合的。

YUM安装PHP7

想使用最新版PHP,就需要使用到REMI源,Remi repository是包含最新版本PHP和MySQL包的Linux源,由Remi提供维护。有个这个源之后,使用YUM安装或更新PHP、MySQL较新版本了。

安装最新的Remi源自动安装文件

# CentOS 6 / RHEL 6
yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

# CentOS 7 / RHEL 7
yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

安装PHP相关组件,下面提供的是一个生产环境中可以使用的标配安装。

$ yum --enablerepo=remi,remi-php70 install
php \
php-cgi \
php-cli \
php-fpm \
php-common \
php-devel \
php-mysqlnd \
php-mysql \
php-sqlite3 \
php-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 -v
PHP 7.0.9 (cli) (built: Jul 20 2016 18:08:08) ( NTS )

启动PHP-FPM

$ service php-fpm start

到这里,PHP7.0就安装完成了。如果需要用到PHP扩展功能,如redis、memcached等,只需要也使用YUM安装即可,如下:

$ yum --enablerepo=remi,remi-php70 install php-redis php-memcached

如果在REMI或EPEL源中都找不到你需要的扩展模块,那么就需要手动编译安装了,也很简单。

另外查看PHP模块信息使用php -m命令。

$ php -m | grep redis
redis

安装一套LNMP参考:LNMP安装包部署实战或者参考PHP7.0版本的LNMPZabbix 3.0安装使用详解

PHP7性能测试

环境:4核 CPU,内存4G,操作系统Centos 6.5。

首先说一点GCC编译器的建议,据鸟哥建议,使用新一点的编译器,推荐 GCC 4.8以上,因为只有GCC 4.8以上PHP才会开启Global Register for opline and execute_data支持, 这个会带来5%左右的性能提升。

写一段程序(网上提供的简单测试方法):

第一段,生成一个 60 万元素的数组,通过查找key 的方式,来确定key是否存在。

$a = array();
for($i&#61;0;$i<600000;$i&#43;&#43;){
  $a[$i] &#61; $i;
}

foreach($a as $i)
{
 array_key_exists($i, $a);
}

首先是PHP 5.3.17版。

[root&#64;localhost test]# time php search_by_key.php 
real 0m0.389s
user 0m0.337s
sys  0m0.051s
[root&#64;localhost test]# time php search_by_key.php 
real 0m0.378s
user 0m0.308s
sys  0m0.062s
[root&#64;localhost test]# time php search_by_key.php 
real 0m0.378s
user 0m0.317s
sys  0m0.061s

其次是PHP 7.0版本。

[root&#64;localhost php7]# time php7 search_by_key.php
real 0m0.082s
user 0m0.066s
sys  0m0.014s
[root&#64;localhost php7]# time php7 search_by_key.php
real 0m0.080s
user 0m0.058s
sys  0m0.021s
[root&#64;localhost php7]# time php7 search_by_key.php
real 0m0.080s
user 0m0.053s
sys  0m0.026s

响应时间在PHP7下运行变为原来的1/4。

还是上面的这个方式&#xff0c;不过由于速度较慢&#xff0c;所以变成了一个60000个元素的数组&#xff0c;查找值。

$a &#61; array();
for($i&#61;0;$i<60000;$i&#43;&#43;){
  $a[$i] &#61; $i;
}

foreach($a as $i)
{
 array_key_exists($i, $a);
}

PHP 5.3.17版

[root&#64;localhost test]# time php search_by_val.php 
real 0m24.296s
user 0m24.184s
sys  0m0.025s
[root&#64;localhost test]# time php search_by_val.php 
real 0m25.523s
user 0m25.317s
sys  0m0.026s
[root&#64;localhost test]# time php search_by_val.php 
real 0m26.026s
user 0m25.478s
sys  0m0.092s

等待的时间&#xff0c;总是觉得很漫长&#xff0c;三次测试&#xff0c;花掉了75秒多。下面&#xff0c;PHP 7 登场了。

[root&#64;localhost php7]# time php7 search_by_val.php
real 0m3.362s
user 0m3.323s
sys  0m0.007s
[root&#64;localhost php7]# time php7 search_by_val.php
real 0m3.266s
user 0m3.251s
sys  0m0.004s
[root&#64;localhost php7]# time php7 search_by_val.php
real 0m3.290s
user 0m3.275s
sys  0m0.006s

有没有&#xff01;速度整整提高了将近7倍。

让您学习到的每一节课都有所收获

《Linux就该这么学》是一本由资深运维专家刘遄老师及国内多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程&#xff0c;极其适合用于Linux技术入门教程或讲课辅助教材。荣获双11、双12购物狂欢节IT品类书籍销量冠军&#xff0c;2017年、2018年国内读者增速最快的技术书籍&#xff0c;您可以在京东、当当、亚马逊及天猫搜索书名后购买&#xff0c;亦可加刘遄老师微信交流学习(手指按住下图3秒钟即可自动扫描)~

201608e7353a557b611814f8a773af02.png

刘遄老师QQ&#xff1a;5604215

☀ Linux技术交流群&#xff1a;560843(新群&#xff0c;火热加群中……)

☀ 官方站点&#xff1a;www.linuxprobe.com

☀ 书籍在线学习(电脑在线阅读效果更佳)&#xff1a;

http://www.linuxprobe.com/chapter-00.html

《Linux就该这么学》是一本基于最新Linux系统编写&#xff0c;面向零基础读者的技术书籍。从Linux基础知识讲起&#xff0c;然后渐进式地提高内容难度&#xff0c;详细讲解Linux系统中各种服务的工作原理和配置方式&#xff0c;以匹配真实生产环境对运维人员的要求&#xff0c;突显内容的实用性。想要学习Linux系统的读者可以点击按钮了解这本书&#xff0c;同时这本书也适合专业的运维人员阅读&#xff0c;作为一本非常有参考价值的工具书&#xff01;




推荐阅读
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
author-avatar
回忆寒窗氵之夜_890
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有