💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# opcache ## PHP四大加速缓存器opcache,apc,xcache,eAccelerator eAccelerator,xcache,**opcache**(5.5默认 linux下安装php时记得加上 --enable-opcache ),apc(偏数据库缓存,分系统和用户缓存,不推荐5.5将弃之,由opcache替代,apcu作为数据缓存独立出来,在单台服务器时性能优于memcachedd的,多台不推荐)是PHP缓存扩展, memcached缓存是数据库缓存扩展(APC比较偏向数据库缓存的),一般两者只有要安装其中一个即可 注意:([详情连接](https://www.chenweiliang.com/cwl-940.html)) 实际测试中发现当Cache数量超过一定阀值的时候,APC的性能不如Memcache opcache的性能优于其他几个缓存器 **一般会选择opcache+memcached|redis这个组合** 如果储存的量不大,tp 的file 缓存,和redis |memcached差不多。但是内存读取肯定要快。如果存储的值多,redis |memcached强大的i/o能力会强于 普通的文件读写 # [使用 OpCache 提升 PHP 5.5+ 程序性能](https://www.cnblogs.com/chunguang/p/5538093.html)(从编译层面提高) 作用是将PHP代码预编译生成的脚本文件 `Opcode` 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗 省去了每次加载和解析 PHP 脚本的开销。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行(避免重复编译,减少 CPU 和内存开销) php.ini 打开 zend\_extension="D:\\phpStudy\\php\\php-7.2.14\\ext\\php\_opcache.dll" ``` <pre class="calibre10">``` <span class="token3">[</span>opcache<span class="token3">]</span> zend_extension <span class="token1">=</span> php_opcache<span class="token3">.</span>dll opcache<span class="token3">.</span>enable <span class="token1">=</span> <span class="token6">0</span> opcache<span class="token3">.</span>memory_consumption <span class="token1">=</span> <span class="token6">128</span> opcache<span class="token3">.</span>max_accelerated_files <span class="token1">=</span> <span class="token6">10000</span> opcache<span class="token3">.</span>revalidate_freq <span class="token1">=</span> <span class="token6">60</span> <span class="token3">;</span> Required <span class="token5">for</span> Moodle opcache<span class="token3">.</span>use_cwd <span class="token1">=</span> <span class="token6">1</span> opcache<span class="token3">.</span>validate_timestamps <span class="token1">=</span> <span class="token6">1</span> opcache<span class="token3">.</span>save_comments <span class="token1">=</span> <span class="token6">1</span> opcache<span class="token3">.</span>enable_file_override <span class="token1">=</span> <span class="token6">0</span> ``` ``` > 不要在编写调试代码中开启opcache,否则你会体会到你的增删改查不能即时同步的痛苦! 开启后在第一次访问php文件时候,自动编译并缓存,如果想手动编译缓存则使用下面的OPcache函数 # [**OPcache 函数**](https://www.php.net/manual/zh/ref.opcache.php) ## **opcache\_compile\_file**(string`$file`) :boolean 手动编译并缓存php脚本,即无需运行,即可编译并缓存 PHP 脚本 该函数可用于在 Web 服务器重启之后初始化缓存,以供后续请求调用。 ## **opcache\_invalidate**(string`$file`\[,boolean`$force`=**`FALSE`**\] ) :boolean 废除php脚本的缓存 ## **opcache\_is\_script\_cached**(string`$file`) :bool 检查指定php脚本是否存在于opcache缓存中 ## **opcache\_reset**(void) :boolean 该函数将重置整个字节码缓存。 在调用\*\*opcache\_reset()\*\*之后,所有的脚本将会重新载入并且在下次被点击的时候重新解析。 ## **opcache\_get\_configuration**(void) :array 返回缓存实例的配置信息。 返回内容如下: ``` <pre class="calibre10">``` <span class="token4">array</span><span class="token3">(</span><span class="token6">3</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"directives"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">25</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"opcache.enable"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.enable_cli"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.use_cwd"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.validate_timestamps"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.inherited_hack"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.dups_fix"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">false</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.revalidate_path"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">false</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.log_verbosity_level"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">1</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.memory_consumption"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">134217728</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.interned_strings_buffer"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">8</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.max_accelerated_files"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">4000</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.max_wasted_percentage"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">float</span><span class="token3">(</span><span class="token6">0.05</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.consistency_checks"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.force_restart_timeout"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">180</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.revalidate_freq"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">60</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.preferred_memory_model"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token2">""</span> <span class="token3">[</span><span class="token2">"opcache.blacklist_filename"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token2">""</span> <span class="token3">[</span><span class="token2">"opcache.max_file_size"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.error_log"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token2">""</span> <span class="token3">[</span><span class="token2">"opcache.protect_memory"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">false</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.save_comments"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.load_comments"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.fast_shutdown"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.enable_file_override"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">false</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache.optimization_level"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">4294967295</span><span class="token3">)</span> <span class="token3">}</span> <span class="token3">[</span><span class="token2">"version"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">2</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"version"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">9</span><span class="token3">)</span> <span class="token2">"7.0.4-dev"</span> <span class="token3">[</span><span class="token2">"opcache_product_name"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">12</span><span class="token3">)</span> <span class="token2">"Zend OPcache"</span> <span class="token3">}</span> <span class="token3">[</span><span class="token2">"blacklist"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">}</span> <span class="token3">}</span> ``` ``` ## **opcache\_get\_status**(\[boolean`$get_scripts`=**`TRUE`**\] ) :array 返回缓存实例的状态信息。 参数: `get_scripts`包含脚本的具体声明信息。 返回内容大致如下 ``` <pre class="calibre17">``` <span class="token4">array</span><span class="token3">(</span><span class="token6">8</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"opcache_enabled"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"cache_full"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">false</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"restart_pending"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">false</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"restart_in_progress"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">bool</span><span class="token3">(</span><span class="token6">false</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"memory_usage"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">4</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"used_memory"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">10936144</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"free_memory"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">123281584</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"wasted_memory"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"current_wasted_percentage"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">float</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">}</span> <span class="token3">[</span><span class="token2">"interned_strings_usage"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">4</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"buffer_size"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">8388608</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"used_memory"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">458480</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"free_memory"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">7930128</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"number_of_strings"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">5056</span><span class="token3">)</span> <span class="token3">}</span> <span class="token3">[</span><span class="token2">"opcache_statistics"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">13</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"num_cached_scripts"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">1</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"num_cached_keys"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">2</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"max_cached_keys"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">7963</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"hits"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"start_time"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">1410858101</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"last_restart_time"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"oom_restarts"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"hash_restarts"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"manual_restarts"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"misses"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">1</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"blacklist_misses"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"blacklist_miss_ratio"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">float</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"opcache_hit_rate"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">float</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">}</span> <span class="token3">[</span><span class="token2">"scripts"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">1</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"/var/www/opcache.php"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span><span class="token6">6</span><span class="token3">)</span> <span class="token3">{</span> <span class="token3">[</span><span class="token2">"full_path"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">17</span><span class="token3">)</span> <span class="token2">"/var/www/opcache.php"</span> <span class="token3">[</span><span class="token2">"hits"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">0</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"memory_consumption"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">1064</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"last_used"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">string</span><span class="token3">(</span><span class="token6">24</span><span class="token3">)</span> <span class="token2">"Tue Sep 16 09:01:41 2014"</span> <span class="token3">[</span><span class="token2">"last_used_timestamp"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">1410858101</span><span class="token3">)</span> <span class="token3">[</span><span class="token2">"timestamp"</span><span class="token3">]</span><span class="token1">=</span><span class="token1">></span> <span class="token4">int</span><span class="token3">(</span><span class="token6">1410858099</span><span class="token3">)</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token3">}</span> ``` ```