Opcache 的前生是 Optimizer+ ,它是 Zend 开发的 PHP 优化加速组件。Optimizer+ 将 PHP 代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速 PHP 的执行。
对于PHP、Python属于解释型语言,不产生机器码,而是产生中间码(中间码是不能直接执行,这个中间码只有解释器可以识别到,中间码要靠解析器来进行执行) PHP的解析器是Zend,PHP使用Zend引擎,中间码我们也称作为操作码(opcode)
一直知道opcache可以提高PHP性能,但没有具体的关注,更多的利用其他的组件来提升系统的性能。一次无意开启了opcache之后,并随意设置了一些配置。结果导致后面在使用一个项目时,发现项目总是不会读取到最新的代码,而是隔一段时间才会执行到最新代码。排查了很久才想起来开启了opcache,于是对opcache做了一个简单的学习与总结。
对于 PHP 这样的解释型语言来说,每次的运行都会将所有的代码进行一次加载解析,这样一方面的好处是代码随时都可以进行热更新修改,因为我们不需要编译。但是这也会带来一个问题,那就是无法承载过大的访问量。毕竟每次加载解析再释放,都会增加 CPU 的负担,通常一台 8核16G 的服务器在2、3000并发左右 CPU 就能达到60%以上的使用率。而且如果你使用的是类似于 Laravel 这种大型的框架,效率将更加低下。这个时候,我们通常会通过增加服务器数量来做负载均衡,从而达到减轻服务器压力的效果。不过,这样做的成本又会增加许多。那么,有没有什么优化的方案呢?
1. Opcache 记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快, 所以之前测试时期就发生了有人一直没有启用Opcache的事情. 启用Opcache非常简单, 在php.ini配置文件中加入:
虽然是老生常谈,还是想在此记录一下。 之前在开发环境的服务器上也遇到过此问题,为何明明在服务器上已经修改了代码,但就是不生效!? 有可能就是因为开启了OPcache,线上环境为了加速PHP性能(线上开启此扩展是很有必要的),开启了此配置,然而在开发环境上代码时常发生修改,需要注意这个配置(开发环境甚至可以关闭),以避免发生上述问题。
原文出处: 惠新宸(@Laruence) PHP7 已经发布了,作为PHP十年来最大的版本升级,最大的性能升级,PHP7在多放的测试中都表现出很明显的性能提升,然而,为了让它能发挥出最大的性能,我
今天临晨的时候, 在我们已经到了12月4日, 但是美国时间还是10月3日的时候, PHP7终于正式发布了.
lnmp 开启 Opcache 脚本缓存可以提高 php 运行性能,进而提高整体服务器的运行效率。Opcache 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件。今天魏艾斯博客尝试开启这个组件,并希望能够提高 php 性能,因为是第一次尝试,后面经过一段时间服务器运行后再来汇报结果。
OPcache通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
一点PHP博客分享如何发挥出PHP7版本中的高性能,PHP7发布也有一段时间了,但是现在还有很多小伙伴还在用PHP5.6开发项目,有的小伙伴用了PHP7只是听说是高性能的版本,却不知道如何体现出PHP7的优势,博主看了关于鸟哥(PHP7核心开发人员)对PHP7的一些描述后,决定基于鸟哥的描述总结一篇关于PHP7的文章分享给大家。 在使用PHP7的时候如果要开启它的高性能,需注意以下几点:
PHP7 已经发布了, 作为 PHP 10 年来最大的版本升级, 最大的性能升级, PHP7 在多放的测试中都表现出很明显的性能提升, 然而, 为了让它能发挥出最大的性能, 我还是有几件事想提醒下.
lnmp 开启 Opcache 脚本缓存可以提高 php 运行性能,进而提高整体服务器的运行效率。Opcache 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件。今天魏艾斯博客尝试开启这个组件,并希望能够提高 php 性能,因为是第一次尝试,后面经过一段时间服务器运行后再来汇报结果。 为了提高 linux 服务器的运行速度和网站的打开速度,魏艾斯博客前期进行了各种尝试,从各种 wordpress 缓存插件开始折腾,后来发现各种 wordpress 缓存插件在博客流量低(1000IP)的时候,
What is OPcache OPcache是PHP中的Zend扩展,可以大大提升PHP的性能。 OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
PHP已经进入了PHP8.0的测试研发阶段,其中就包括万众期待的PHP JIT新特性,这里我们尝新编译安装PHP8.0,并试着开启opcache中的JIT
PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的)。对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法。
当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁盘I/O开销,那么opcode cache的性能提升是非常有限的。但是既然opcode cache能带来CPU和内存开销的降低,这总归是好事。
php-fpm 全称是 PHP FastCGI Process Manager 的简称,从名字可得知,是一个 FastCGI 的管理器。
相信建站的朋友都十分关心网站速度问题了,玖柒的小窝一直在强调极速优化这次词语,同时在之前的很多文章中我也简单的介绍了子比主题的关于速度优化的一些原理。理论上来讲使用子比主题搭配一个不是太差的服务器,那么就已经很快了,如果你想让你的网站变得更快,那么看了这篇文章,我相信完全够了。
1. 什么是preload 什么是preload? Preloading in PHP 7.4中有一句话总结的简单到位: Opcache, but more! 那么preload比opcache
比较奇怪的是今天的访问量到了500以下,想测试下是哪个地区无法访问,结果打开测速网站,网站直接挂了,所有地区全红,cpu内存跑满。于是想着优化下php的执行,开启代码缓存:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
php在执行函数最消耗时间的就是查询SQL数据库了,一般来讲一个页面的数据库查询大概在120到260次左右,使用Redis或者Memcached缓存,原理就是将php查询过的数据库缓存下来,下一次相同内容就不再查询数据库了,直接从缓存获取,极大的提高php执行效率。
最近业务有所增长,随之而来的是慢请求逐渐多了起来,在搜索php性能优化的过程中发现了opcache,相关的文章很多,但是都比较零碎,所以在此做个总结。公司当前使用的PHP版本为php7.x.x。
去年就已经使用PHP7版本了,那时就说PHP7比老版本快了很多很多,在今年,又分别出了7.1和7.2版本,从 wordpress 4.9.3 开始,该版本修复了 4.9 以来的34个问题。包括外观定制器更改、小工具、可视编辑器和php 7.2兼容性的修复。做了一些对比后,最终决定将博客环境升级到PHP7.2版本。
在理解 OPCache 功能之前,我们有必要先理解PHP-FPM + Nginx 的工作机制,以及PHP脚本解释执行的机制。
前面已经介绍了PHP加速器的原理和功用(参见LAMP-PHP-fpm服务器配置),xcache作为目前使用广泛的PHP加速器之一,其性能比早期的eAccelerator加速器要优良,故本次就对比一下PHP程序在执行时加速器xcache对其的性能影响。
根据前文《2015博客升级记(五):CentOS 7.1编译安装PHP7》的configure编译参数设定,安装后的PHP7配置文件所在路径是/usr/local/php7/etc。该目录下会有两个配置文件:php-fpm.conf和php.ini,以及一个文件夹php-fpm.d(包含www.conf文件)。
魏艾斯博客写过有关开启 memcached,opcache 缓存的文章,前者是内容缓存插件,后者是 php 缓存插件,本来以为服务器优化折腾到此就差不多了,这几天在@张戈博客看到一篇文章,原来开启 memcached 之后,还可以再上一个 batcache 插件,用来把 html 静态文件放到内存中去,于是经过一番测试,在云服务器上安装了这个插件,下面写出相关操作步骤。
目前这个build的dockerfile只用在测试开发环境哈,需要优化opcache啥的自己开启一下哈 FROM centos:8 MAINTAINER zhaohao731869706@163.com ENV PHP_VERSION=8.1 ENV LANG=C.UTF-8 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN rm /etc/yum.repos.d/*.repo && curl https://m
WPJAM Basic 插件的系统信息功能,可以让大家在 WordPress 后台就能够快速实时查看当前系统的状态,需要注意的是功能目前只支持 Linux 服务器,所以这也是为什么我常说 WPJAM Basic 只支持 Linux 的原因。
配置指令如下: [opcache] zend_extension=opcache.so opcache.enable_cli=1 ;共享内存大小, 这个根据你们的需求可调 opcache.memory_consumption=256 ;interned string的内存大小, 也可调 opcache.interned_strings_buffer=8 ;最大缓存的文件数目 opcache.max_accelerated_files=4000 ;60s检查一次文件更新 opcache.reval
盼望以久的 PHP 7.0 正式版,终于在今天发布了! 官方给出的新特性如下: PHP 7.0.0 comes with new version of the Zend Engine with fea
本人参与的swoole项目有幸被很多朋友使用,我也大力向周边的一些朋友推荐,随着swoole的版本迭代更新,已经足够稳定了,在阿里,腾讯,yy等各大公司都有着使用,也有很多游戏圈里的朋友也在使用,这些朋友经常会提到一个问题,每次代码更新还需要停止服务,然后重新启动,来达到更新代码,然而这种做法,是比较粗暴的。其实swoole里提供reload的特性,完全支持代码的热更新。
首先检查程序的PHP版本,php5.6的,就设置为php7.0试试,php7.0不行,就换php7.1。不要设置为7.2以上
编译前执行下列命令 sh#添加组 groupadd www #添加php-fpm用户 useradd -c php-fpm-user -g www -M php-fpm # c和c++编译器 yum install -y gcc gcc-c++ # PHP扩展依赖 yum install -y libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel openldap-devel 编译指令 prefi
/home/ubuntu/myphp/php-8.0.0alpha1/ext/opcache
通常部署完php环境后会进行一些安全设置,除了熟悉各种php漏洞外,还可以通过配置php.ini来加固PHP的运行环境,PHP官方也曾经多次修改php.ini的默认设置。 下面对php.ini中一些安全相关参数的配置进行说明 register_globals 当register_globals = ON时,PHP不知道变量从何而来,也容易出现一些变量覆盖的问题。因此从最佳实践的角度,强烈建议设置 register_globals = OFF,这也是PHP新版本中的默认设置。 open_basedirope
好几个月之间其实已经配置过LAMP LNMP等等一些配置,以前配置都是按照晚上抄的,基本都能配置出来,现重头学想自己配置下,但是发现好多配置都忘了 ,中间踩了几个坑,记录下,也更彻底的学习下…..
本文实例讲述了php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法。分享给大家供大家参考,具体如下:
php7及以后的php版本更新主要方向就是性能优化,所以在项目允许的范围内,尽量使用更高的版本。
1.关闭debug 打开.env文件,把debug设置为false. APP_ENV=local APP_DEBUG=false APP_KEY=base64:6ouIfKdFXfaIGZrH9qBCKAWupg4kVwuRsRGpeQnCRh4= 2.缓存路由和配置 php artisan route:cache php artisan config:cache 3.composer优化 sudo composer dump-autoload --optimize 4.Laravel优化命令 php a
PHP5.1 5000个数快速排序平均响应时间2587ms PHP5.2 5000个数快速排序平均响应时间2625ms PHP5.3 5000个数快速排序平均响应时间2509ms PHP5.4 5000个数快速排序平均响应时间2339ms PHP7.0 5000个数快速排序平均响应时间685ms
php在执行的时候需要每次都从磁盘读取文件信息,再编译成脚本,这个过程非常消耗时间,我们强烈建议您安装php的 opcache 扩展,用来缓存已经编译好的php代码,从而加速php的执行。
注:本文转自详解Centos7源码编译安装 php7.2之生产篇,如需转载请注明出处https://www.cnblogs.com/zhuchenglin/p/11773409.html。
wget https://www.php.net/distributions/php-7.4.0.tar.gz wget http://nginx.org/download/nginx-1.17.6.tar.gz
前记 Xdebug 前记 定义 开启Xdebug 适用目标 实验效果 注意事项 session.upload_progress 定义 开启session.upload_progress. 适用目标 实
需要注意的是,trait的继承顺序: 来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法 当多个trait被同一个类使用的时候,会出现方法冲突的情况,使用关键词insteadof解决 示例代码:
参考风雪之隅https://www.laruence.com/2020/06/27/5963.html
领取专属 10元无门槛券
手把手带您无忧上云