我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何用yum的方式安装PHP7并进行性能测试

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何用yum的方式安装PHP7并进行性能测试

今天小编给大家分享一下如何用yum的方式安装PHP7并进行性能测试的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

如何用yum的方式安装PHP7并进行性能测试

PHP7与HHVM

对于普通的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 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-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 -vPHP 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 redisredis

安装一套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=0;$i$i++){ $a[$i] = $i;}foreach($a as $i){array_key_exists($i, $a);}

首先是PHP 5.3.17版。

[root@localhost test]# time php search_by_key.phpreal 0m0.389suser 0m0.337ssys  0m0.051s[root@localhost test]# time php search_by_key.phpreal 0m0.378suser 0m0.308ssys  0m0.062s[root@localhost test]# time php search_by_key.phpreal 0m0.378suser 0m0.317ssys  0m0.061s

其次是PHP 7.0版本。

[root@localhost php7]# time php7 search_by_key.phpreal 0m0.082suser 0m0.066ssys  0m0.014s[root@localhost php7]# time php7 search_by_key.phpreal 0m0.080suser 0m0.058ssys  0m0.021s[root@localhost php7]# time php7 search_by_key.phpreal 0m0.080suser 0m0.053ssys  0m0.026s`

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

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

$a = array();for($i=0;$i$i++){ $a[$i] = $i;}foreach($a as $i){array_key_exists($i, $a);}[root@localhost test]# time php search_by_val.phpreal 0m24.296suser 0m24.184ssys  0m0.025s[root@localhost test]# time php search_by_val.phpreal 0m25.523suser 0m25.317ssys  0m0.026s[root@localhost test]# time php search_by_val.phpreal 0m26.026suser 0m25.478ssys  0m0.092s

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

[root@localhost php7]# time php7 search_by_val.phpreal 0m3.362suser 0m3.323ssys  0m0.007s[root@localhost php7]# time php7 search_by_val.phpreal 0m3.266suser 0m3.251ssys  0m0.004s[root@localhost php7]# time php7 search_by_val.phpreal 0m3.290suser 0m3.275ssys  0m0.006s

有没有!速度整整提高了将近7倍。

以上就是“如何用yum的方式安装PHP7并进行性能测试”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何用yum的方式安装PHP7并进行性能测试

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何用yum的方式安装PHP7并进行性能测试

今天小编给大家分享一下如何用yum的方式安装PHP7并进行性能测试的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PHP7与H
2023-06-27

如何使用Go语言对分布式应用进行性能测试

对于分布式应用程序的性能测试,go 提供了 vegeta 和 locust 两个框架。使用 vegeta,可创建自定义测试脚本并配置攻击选项,执行并发请求并生成详细报告。使用 locust 则可通过更友好的界面创建复杂工作负载,并通过 we
如何使用Go语言对分布式应用进行性能测试
2024-05-08

如何使用Go语言进行高效的性能测试

go 语言提供了高效的性能测试工具,包括内置的 testing 包,用于编写基准测试。基准测试使用 benchmark 函数定义,并通过 run 函数运行。例如,可以编写一个基准测试来测量 fib 函数在不同输入下的执行时间。通过性能测试可
如何使用Go语言进行高效的性能测试
2024-05-07

在Golang的高并发场景中如何进行基准测试和性能分析?

为了在 go 的高并发场景中进行基准测试和性能分析,您可以采取以下步骤:使用 go test 工具进行基准测试,以测量代码在特定条件下的性能。使用 go tool pprof 工具进行性能分析,以深入调查代码的内部行为和性能模式。通过以下方
在Golang的高并发场景中如何进行基准测试和性能分析?
2024-05-10

如何使用jMeter构造大量并发HTTP请求进行微服务性能测试

这篇文章将为大家详细讲解有关如何使用jMeter构造大量并发HTTP请求进行微服务性能测试,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。比如我开发好了一个微服务,想测试其在大并发请求下的性能表现如何。比较
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录