PHP7如何用Opcache扩展提升性能

PHP7如何用Opcache扩展提升性能?相信很多新手小白对此束手无策,这篇文章介绍了Opcache扩展以及如何用Opcache扩展提升PHP7性能,希望你能找到解决的方法。

什么是Opcache呢?

Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行。

PHP的正常执行流程如下

PHP7如何用Opcache扩展提升性能

request请求(nginx,apache,cli等)–>Zend引擎读取.php文件–>扫描其词典和表达式 –>解析文件–>创建要执行的计算机代码(称为Opcode)–>最后执行Opcode–> response 返回

每一次请求PHP脚本都会执行一遍以上步骤,如果PHP源代码没有变化,那么Opcode也不会变化,显然没有必要每次都重新生成Opcode,结合在Web中无所不在的缓存机制,我们可以把Opcode缓存下来,以后直接访问缓存的Opcode岂不是更快,启用Opcode缓存之后的流程图如下所示:

PHP7如何用Opcache扩展提升性能

Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。

下面介绍Opcache的安装

安装:

1、找到opcache的扩展,我的是php7.1

yum list php71*

2、安装扩展

yum install php71w-opcache.x86_64

配置:

zend_extension=opcache.so
[opcache]
;开启opcache
opcache.enable=1  
;CLI环境下,PHP启用OPcache
opcache.enable_cli=1
;OPcache共享内存存储大小,单位MB
opcache.memory_consumption=128  
;PHP使用了一种叫做字符串驻留(string interning)的技术来改善性能。例如,如果你在代码中使用了1000次字符串“foobar”,在PHP内部只会在第一使用这个字符串的时候分配一个不可变的内存区域来存储这个字符串,其他的999次使用都会直接指向这个内存区域。这个选项则会把这个特性提升一个层次——默认情况下这个不可变的内存区域只会存在于单个php-fpm的进程中,如果设置了这个选项,那么它将会在所有的php-fpm进程中共享。在比较大的应用中,这可以非常有效地节约内存,提高应用的性能。
这个选项的值是以兆字节(megabytes)作为单位,如果把它设置为16,则表示16MB,默认是4MB
opcache.interned_strings_buffer=8
;这个选项用于控制内存中最多可以缓存多少个PHP文件。这个选项必须得设置得足够大,大于你的项目中的所有PHP文件的总和。
设置值取值范围最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。也就是说在200到1000000之间。
opcache.max_accelerated_files=4000
;设置缓存的过期时间(单位是秒),为0的话每次都要检查
opcache.revalidate_freq=60
;从字面上理解就是“允许更快速关闭”。它的作用是在单个请求结束时提供一种更快速的机制来调用代码中的析构器,从而加快PHP的响应速度和PHP进程资源的回收速度,这样应用程序可以更快速地响应下一个请求。把它设置为1就可以使用这个机制了。
opcache.fast_shutdown=1
;如果启用(设置为1),OPcache会在opcache.revalidate_freq设置的秒数去检测文件的时间戳(timestamp)检查脚本是否更新。
如果这个选项被禁用(设置为0),opcache.revalidate_freq会被忽略,PHP文件永远不会被检查。这意味着如果你修改了你的代码,然后你把它更新到服务器上,再在浏览器上请求更新的代码对应的功能,你会看不到更新的效果
强烈建议你在生产环境中设置为0,更新代码后,再平滑重启PHP和web服务器。
opcache.validate_timestamps=0 
;开启Opcache File Cache(实验性), 通过开启这个, 我们可以让Opcache把opcode缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升.
这样PHP就会在/tmp目录下Cache一些Opcode的二进制导出文件, 可以跨PHP生命周期存在.
opcache.file_cache=/tmp

查看phpinfo:

PHP7如何用Opcache扩展提升性能

测试结果:

PHP7如何用Opcache扩展提升性能

以上就是Opcache扩展以及如何用Opcache扩展提升PHP7性能的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注网站那些事行业资讯!

原创文章,作者:FDVIC,如若转载,请注明出处:https://www.wangzhanshi.com/n/7083.html

(0)
FDVIC的头像FDVIC
上一篇 2025年1月1日 16:38:08
下一篇 2025年1月1日 16:38:10

相关推荐

  • php5 mysql安装配置的方法是什么

    php5 mysql安装的方法:首先选择apache2的动态添加模块;然后在redhat linux 9上编译;接着安装PHP非CGI版本;最后安装需要的软件包即可。 php5和m…

    php 2025年1月2日
  • 基于PHP实现一个简单的http服务器

    在 PHP 中,你可以使用 socket 函数编写一个简单的 HTTP 服务器。以下是一个示例代码,监听 9000 端口,当收到请求时返回 &quot…

    php 2025年2月24日
  • 如何在php7中使用yar生成一个docker镜像

    Docker包含三个概念: (1)远程仓库即远程镜像库所有镜像的聚集地(不可进入操作)。 (2)本地镜像即从远程仓库拉取过来的镜像 (3)运行起来的本地镜像叫做容器(分层的可操作)…

    php 2025年1月1日
  • 源码编译安装php7的步骤

    下载最新版的php 7.0.5 的源码包:    下载下来之后上传至服务器 因为php安装需要编译,所以服务器应该保证gcc和g++环境的安装 首先释放安装包: tar -xvzf…

    2025年1月1日
  • PHP7中怎么操作MySQL数据库

    连接到 MySQL服务器 mysqli_connect(host, username, password [,dbname] [,port]); – 参数: host:…

    php 2025年1月1日
  • PHP7+Swoole/Nginx/Golang性能对比案例

    QPS对比 使用apache bench工具对Nginx静态页、Golang Http程序、PHP7+Swoole Http程序进行压力测试。在同一台机器上,进行并发100共100…

    php 2025年1月1日
  • 如何安装配置PHP7

    解压文件 下载后得到php7的安装包(例:php-7.0.0-Win32-VC14-x64.zip)。() 解压后复制php文件到安装目录:D:\phpserver\php 修改a…

    2025年1月1日
  • PHP5.5至PHP7.2 新特性有哪些

    一、从PHP 5.5.x 移植到 PHP 5.6.x 使用表达式定义常量 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括…

    php 2025年1月1日
  • Centos下PHP5怎么升级到PHP7

    首先下载PHP7安装包,使用wget http://am1.php.net/distributions/php-7.2.0.tar.bz2,或者直接访问下载,然后ftp到linux…

    php 2025年1月1日
  • PHP7留言板开发之列表搜索的实现方法

    1. 当数据量上来的时候,要找到它们中的一条,单单翻页去查找是一件很困难的事,这是时候就需要用到数据的搜索,可以瞬间找到我们想要的数据,既可以模糊搜索也可以精准搜索。在【分页】那一…

    2025年1月1日

发表回复

登录后才能评论