首页
学习
活动
专区
圈层
工具
发布

PHP加载大文件时require和file_get_contents的性能对比

在开发过程中发现,用require来加载一个很大(几百K,甚至几兆)的配置文件时,会造成响应超时。...如果把这个配置文件的内容序列化后,用file_get_contents获取文件然后反序列化的方法来加载,就会快很多。 经过近两周的研究,大概知道了其中的原因。...) 如果遇到 require 或者 include 之类的函数时,会 从 zend_execute 阶段重新回到 zend_compiler 阶段,开始解释PHP,执行PHP的过程。...: 这两个函数的执行可以分成两部分:读取文件和构造配置文件里面的数组; 先说读取文件,require读取的机制是,以8192字节大小的buffer循环将文件读入内存;而file_get_contents...内部是函数调用,而require是一个内置的opcode,所以调用file_get_contents时的开销要比require略大; 所以,小文件的时候,file_get_contents 读取文件时

68110

如何更好的使用OPcache实现性能优化

什么是opcache OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。...禁用的话可以提高性能,但是也容易导致应用不可用。 ;opcache.use_cwd=1 ; 如果启用(1),opcache会每隔设置的值时间来判断脚本是否更新。...;opcache.revalidate_path=0 ; 是否保存PHP脚本中的注释内容。禁用,则不会缓存PHP代码中的注释,可以减少文件中的体积,但是一些依赖注释或者注解将无法使用。...;opcache.file_cache_only=0 ; 当从文件缓存中加载脚本的时候,是否对文件的校验和进行验证。...从截图上来看,开启opcache开启之后,有一些小幅度的提升。也并没有网上说的翻倍的提升。

1.3K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何更好的使用OPcache实现性能优化

    通过上面的第3步,我们可以看到每一次请求都会去解析php文件内容,不管是php文件的内容是否发生变化,都会执行这样的一个重复流程来生成opcode。...禁用的话可以提高性能,但是也容易导致应用不可用。 ;opcache.use_cwd=1 ; 如果启用(1),opcache会每隔设置的值时间来判断脚本是否更新。...;opcache.revalidate_path=0 ; 是否保存PHP脚本中的注释内容。禁用,则不会缓存PHP代码中的注释,可以减少文件中的体积,但是一些依赖注释或者注解将无法使用。...;opcache.file_cache_only=0 ; 当从文件缓存中加载脚本的时候,是否对文件的校验和进行验证。...从截图上来看,开启opcache开启之后,有一些小幅度的提升。也并没有网上说的翻倍的提升。

    1.6K20

    PHP Opcache工作原理

    我们需要注意一个事情,在PHP开发中,一般会有大段的注释,也会被缓存到OPCache中。 可以通过php.ini的配置,关闭注释的缓存。...默认值0 6.3 注释相关的缓存 opcache.load_commentsboolean 如果禁用,则即使文件中包含注释,也不会加载这些注释内容。...opcache.file_cache_consistency_checksboolean 当从文件缓存中加载脚本的时候,是否对文件的校验和进行验证。...opcache.file_cache_fallbackboolean 在 Windows 平台上,当一个进程无法附加到共享内存的时候, 使用基于文件的缓存,也即:opcache.file_cache_only...=1 ; 是否加载文件/函数的注释 ;opcache.load_comments=1 ; 打开快速关闭, 打开这个在PHP Request Shutdown的时候会收内存的速度会提高 ; 推荐 1

    1.8K21

    面试PHP主管岗位的时候,问我PHP的opcache是用来干嘛的?

    opcache从字面意思,肯定是缓存这一块的。但是你是否知道它的工作原理是怎样的呢?这里一点一点让你了解!...我们需要注意一个事情,在PHP开发中,一般会有大段的注释,也会被缓存到OPCache中。可以通过php.ini的配置,关闭注释的缓存。...默认值0 6.3 注释相关的缓存opcache.load_commentsboolean 如果禁用,则即使文件中包含注释,也不会加载这些注释内容。...opcache.file_cache_consistency_checksboolean 当从文件缓存中加载脚本的时候,是否对文件的校验和进行验证。...opcache.file_cache_fallbackboolean 在 Windows 平台上,当一个进程无法附加到共享内存的时候, 使用基于文件的缓存,也即:opcache.file_cache_only

    1.1K20

    详解:PHP加速器配置神器opcache

    这得从PHP代码的生命周期说起,请求PHP脚本时,会经过五个步骤 Zend引擎必须从文件系统读取文件、扫描其词典和表达式、解析文件、创建要执行的计算机代码(称为Opcode),最后执行Opcode。...每一次请求PHP脚本都会执行一遍以上步骤,如果PHP源代码没有变化,那么Opcode也不会变化,显然没有必要每次都重行生成Opcode,结合在Web中无所不在的缓存机制,我们可以把Opcode缓存下来,...关闭这条指令会提升性能,但是会对已存在的应用造成破坏. opcache.use_cwd=0   ; 开启文件时间戳验证 opcache.validate_timestamps=1   ; 检查脚本时间戳是否有更新的周期... Framework2等. ; 推荐0 opcache.save_comments=1   ; 如果禁用,则即使文件中包含注释,也不会加载这些注释内容。...第二个问题是做版本发布时,一般都是sync方式,可能会出现文件发布一半时被opcache缓存,用户访问会报程序错误,这个主要是因为文件内容缓存了一半,但是文件的时间戳不会在改变,所以就算opcache检测时也不会去读取新的文件了

    2.3K00

    PHP Opcache的工作原理

    OPCache 介绍 OPCache 是Zend官方出品的,开放自由的 opcode 缓存扩展,还具有代码优化功能,省去了每次加载和解析 PHP 脚本的开销。...我们需要注意一个事情,在PHP开发中,一般会有大段的注释,也会被缓存到OPCache中。 可以通过php.ini的配置,关闭注释的缓存。...默认值0 6.3 注释相关的缓存 opcache.load_commentsboolean 如果禁用,则即使文件中包含注释,也不会加载这些注释内容。...opcache.file_cache_consistency_checksboolean 当从文件缓存中加载脚本的时候,是否对文件的校验和进行验证。...opcache.file_cache_fallbackboolean 在 Windows 平台上,当一个进程无法附加到共享内存的时候, 使用基于文件的缓存,也即:opcache.file_cache_only

    1.1K20

    PHP Opcache的工作原理

    OPCache 介绍 OPCache 是Zend官方出品的,开放自由的 opcode 缓存扩展,还具有代码优化功能,省去了每次加载和解析 PHP 脚本的开销。...我们需要注意一个事情,在PHP开发中,一般会有大段的注释,也会被缓存到OPCache中。 可以通过php.ini的配置,关闭注释的缓存。...默认值0 6.3 注释相关的缓存 opcache.load_commentsboolean 如果禁用,则即使文件中包含注释,也不会加载这些注释内容。...opcache.file_cache_consistency_checksboolean 当从文件缓存中加载脚本的时候,是否对文件的校验和进行验证。...opcache.file_cache_fallbackboolean 在 Windows 平台上,当一个进程无法附加到共享内存的时候, 使用基于文件的缓存,也即:opcache.file_cache_only

    1.5K21

    从零基础到成功解题之0ctf-ezdoor

    02 opcache突破口 opcache是缓存文件,他的作用就类似于web项目中的静态文件的缓存, 比如我们加载一个网页, 浏览器会自动帮我们把jpg, css缓存起来, 唯独php没有缓存, 每次均需要...我们设想A网站: A网站的网页index.php具有缓存文件index.php.bin 而访问index.php的时候加载缓存index.php.bin 倘若这时候具有上传,我们可以覆盖index.php.bin...是不是就会加载我们的恶意文件了呢?...]/index.php.bin 即可 然后上传覆盖题目当前的空白的index.php.bin 即可达到恶意缓存覆盖,加载我们的index.php的目的 04 opcache-system_id 第一个问题是如何生成与题目一致的...从shell到获取flag文件 index.php文件覆盖成功后,我们又遇到了新的问题 比如我们写如下shell php @eval($_POST['sky']); ?

    92140

    PHP5.4 + Zend Opcache 加速 wordpress 小结

    之所以要切换到 Zend Opcache,是因为各种评测结果都显示 Zend Opcache 性能优于 APC,尤其是对 wordpress 的加速更是经过验证的,而且从 PHP5.5 开始已经绑定了...相信很多朋友还用的是 PHP 5.3, 建议升级 PHP5.4 吧,且不说短数组语法、闭包支持已经内置的开发用 Web server,哪怕只是为了 wordpress 运行更快,也值得升级。...我这里没卸载,主要是因为 Zend Opcache 没有数据缓存 API,我在没有 Memcached 的时候都会用 APC 来做 Laravel 的缓存驱动。...目录下会自动添加 Zend Opcache 的配置文件 opcache-default.blacklist 和 opcache.ini....opcache.revalidate_freq=60 正常来说,这样就完成了 Zend Opcache 的安装,通过 php -m 查看模块是否正常加载,然后 httpd -k restart 就可以了

    2.1K40

    WordPress使用Redis和opcache为网站加速教程

    主题的动态按需加载就是为了解决这个问题,不管你是否开启此功能,主题会按照当前页面自动检测是否有视频,有的话的就加载对应的JS文件,同时自动分析支持的格式加载对应的格式支持js文件,不需要的文件一律不加载...后台主要采用php以及数据库进行页面渲染,主题开发中保持良好的开发逻辑,并且使用WP官方Object Cache对象缓存机制,确保函数的高效执行,有效的提高渲染速度 本篇文章我们也重点说一说如何优化后台的渲染速度...如果没有开启成功,请按照上面的步骤检测php扩展和Redis程序是否安装成功 image.png Opcache加速教程 根据PHP的执行逻辑,每一个php函数在执行的时候php会先把此函数进行编译解析...Opcache是PHP官方公司开发的一款PHP优化加速扩展,它的原理把PHP函数编译解析后的内容进行缓存,从而提高PHP的执行速度!根据测试,能有效的提高2到5倍左右的执行效率。...80000 (default "2000");OPcache控制内存中最多可以缓存多少个PHP文件,建议设置大一点,大于你的项目中的所有PHP文件的总和opcache.revalidate_freq=3

    3K20

    使用OPCache提升PHP的性能

    这是 PHP 文档中关于 OPcache 的简介,也就是说,OPcache 节约了每次加载和解析的步骤,将第一次解析编译后的脚本字节码缓存到系统的共享内存中。其实,这就类似于一个不完全的编译。...只不过它并不是完全的一套编译流程,我们还是依赖的 PHP-FPM 来运行脚本,只不过在开启 OPcache 后,PHP-FPM 会先从内存中查找是否已经有相关的已经缓存的字节码在内存中了,如果有的话就直接取用...另外,OPcache 是针对文件的,也就是说,一个文件如果是新增加进来的,只有运行过它才会缓存,如果没有运行过,它并不在当前的共享内存中。...也可以在未安装 OPcache 的系统中使用安装包中的文件来进行安装。 cd php-7.4.4/ext/opcache/ phpize ....代码只是简单的输出了一行文字,不过我们使用的是一个简单的 mvc 框架 ,也就是说这段代码运行起来至少也会加载几个文件,而不是简简单单的一个文件。 首先我们来看未开启 OPcache 的情况。 ?

    1.1K10

    php7性能优化之opcache

    鸟哥在博客中说,提高PHP 7性能的几个tips,第一条就是开启opcache: 记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快,...官网介绍: OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。...如上图,启用opcache之前,每一次请求PHP脚本都会执行一遍以上步骤,如果PHP源代码没有变化,那么Opcode也不会变化,显然没有必要每次都重新生成Opcode,结合在Web中无所不在的缓存机制,...设置的秒数去检测文件的时间戳(timestamp)检查脚本是否更新。...;opcache.revalidate_freq=2 (default "2") ;这个选项用于设置缓存的过期时间(单位是秒),当这个时间达到后,opcache会检查你的代码是否改变,如果改变了PHP会重新编译它

    1.7K40

    Amazing phpinfo()

    / OPCACHE 定义 opcache是缓存文件,他的作用就类似于web项目中的静态文件的缓存, 比如我们加载一个网页, 浏览器会自动帮我们把jpg, css缓存起来, 唯独php没有缓存, 每次均需要...设想A网站: A网站的网页index.php具有缓存文件index.php.bin 而访问index.php的时候加载缓存index.php.bin 倘若这时候具有上传,我们可以覆盖index.php.bin...而正是这种情况下,opcache的开启给我们带了机会 利用方式也不算复杂 我们在本地启动一个同版本、同配置、同目录的php项目 然后写一个index.php,里面是我们的恶意代码 然后访问这个文件,生成...opcache缓存文件 然后利用hex工具,更改缓存文件的system_id和timestamp两个字段为题目中的值 而system_id和timestamp两个字段的值如何获取?...所以此时我们上传的index.php.bin成功覆盖原来的index.php.bin 导致访问index.php的时候,服务器加载了我们上传的恶意opcache文件,成功getshell 完整详细解法参考

    1.2K60

    Apc缓存Opcode

    1、PHP执行 PHP的运行阶段也分成三个阶段: Parse。语法分析阶段。 Compile。编译产出opcode中间码。 Execute。...PHP APC提供两种缓存功能,即缓存Opcode(目标文件),我们称之为apc_compiler_cache。同时它还提供一些接口用于PHP开发人 APC的主页是:php apc 。...从PHP5.2开始,APC引入了一个小甜饼,解决了困扰大家已久的大文件上传的进度条问题.。 6. APC的高级使用 1.缓存期限: APC的缓存分两部分:系统缓存和用户数据缓存....系统缓存: 是自动使用的,是指APC把PHP文件源码的编译结果缓存起来,然后在再次调用时先对比时间标记。如果未过期,则使用缓存代码运行。...安装opcache 编译安装PHP5.5的时候加上–enable-opcache 2.在php.ini文件中添加如下配置: zend_extension=opcache.so [opcache]

    71220

    Batcache 插件给服务器提速的安装过程

    下面简单说一下 memcached 和 opcache 的原理。 1、OPcache 用来提高 PHP 代码执行效率, 减少每次加载和解析 PHP 脚本的开销。...对于 php7 默认集成了 OPcache,所以在 php.ini 中开启(lnmp 开启 Opcache 脚本缓存提高 php 性能)就可以了。... 和 object-cache.php 过程记录及内存缓存加速效果 MemcacheD 缓存是否启用成功及命中率检查 Memcached 只允许本地访问 11211 端口 解决未授权漏洞 多种方法实时监测...提示:网上有些博主说要修改一下参数,但是老魏修改了之后出现了缓存不更新的问题,如果你也遇到同样的问题,请不要修改,直接上传官方源文件,网页就正常了。...魏艾斯博客测试的时候变化最明显的是后台点击编辑文件的等待时间,上了 batcache 之后标题栏上的小圆圈从转三圈减少为转一圈就能进去了,而且前台网页打开时间也有一定提速,总体来说效果还是蛮不错的。

    1.5K30

    使用 opcache 优化生产环境 PHP

    OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。...=8 ;最大缓存的文件数目,命中率不到 100% 的话, 可以试着提高这个值 opcache.max_accelerated_files=4000 ;60s检查一次文件更新 opcache.revalidate_freq...=0 ; 是否快速关闭, 打开后在PHP Request Shutdown的时候回收内存的速度会提高 opcache.fast_shutdown=1 二、部分配置参数说明 opcache.revalidate_freq...这个配置选项用于设置缓存的过期时间,如果设置为0,每次请求时,都会检查文件是否修改,很耗资源,所以如果暂时不需要使用opcache,直接把opcache.enable设置为0即可。...-type f -print | grep php | wc -l 这个命令来快速计算你的代码库中的PHP文件数。

    47230

    opcache优化作用

    php的执行流程: 1. PHP 初始化执行环节,启动 Zend 引擎,加载注册的扩展模块。 2. 初始化后读取 PHP 脚本文件,Zend 引擎对 PHP 文件进行词法分析,语法分析,生成语法树。...在 PHP-FPM 模式下,步骤 1 在启动时执行一次,后续的请求中不再执行;步骤 2 3 4每次请求都需要执行一遍。...opcache就是省略了步骤2 、3 ,把opcode缓存住了,就是opcache OPCache 缓存的机制主要是:将 PHP 编译产生的字节码以及数据缓存到共享内存中,在每次请求,从缓存中直接读取编译后的...opcache的配置: ;允许在 web 环境使用 opcache.enable=1 ;允许在 cli 环境使用 opcache.enable_cli=1 ;OPcache 的共享内存大小,以兆字节为单位...哈希表中可存储的脚本文件数量上限 opcache.max_accelerated_files=4000 ;检查脚本时间戳是否有更新的周期,以秒为单位。

    55150

    低成本高收益的PHP性能提升方案

    | 导语开启opcache提升PHP性能 介绍 OPcache通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销.../local/php/,如果没有指定安装目录则在/etc目录下,通过修改配置文件开启opcache功能,修改完配置文件后需要重启 1.nginx+php-fpm的形式只需要重启php-fpm即可 2.apache...=8 #nterned string的内存大小 opcache.max_accelerated_files=4000 #最大缓存的文件数目。...=60 #opcache自动检测文件是否更新的周期,单位秒。...重启完之后可以通过php-fpm -m 或者php -m 来查看是否加载成功 [Zend Modules] Zend OPcache  到此为止你的PHP就开启强大的opcache功能,就PHP7而已

    62230

    使用 opcache 优化生产环境PHP

    OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。...= ;最大缓存的文件数目,命中率不到 % 的话, 可以试着提高这个值 opcache.max_accelerated_files= ;s检查一次文件更新 opcache.revalidate_freq...= ; 是否快速关闭, 打开后在PHP Request Shutdown的时候回收内存的速度会提高 opcache.fast_shutdown= 二、部分配置参数说明 opcache.revalidate_freq...这个配置选项用于设置缓存的过期时间,如果设置为0,每次请求时,都会检查文件是否修改,很耗资源,所以如果暂时不需要使用opcache,直接把opcache.enable设置为0即可。...-type f -print | grep php | wc -l 这个命令来快速计算你的代码库中的PHP文件数。

    95920
    领券