Jacky's Blog Jacky's Blog
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
  • 3
  • 0

WordPress OPcache Hook

Jacky
7 4 月, 2020

前言

服务器上开了 OPcache 也设置了 opcache.revalidate_freq 这个参数,这样不至于频繁的检测 PHP 脚本是否更新,但又出现了新的问题,比如更新了代码不会及时刷新 PHP 缓存。

自己构建的项目还好,但是 WordPress 的代码缓存不能自动刷新就会出现很多问题,比如更新插件、主题,WordPress Core 自动更新,就会导致更新完之后依然在提醒你更新,这很不优雅。于是我简单的造了一个小插件 WordPress OPcache Hook.

原理

经过对自动更新程序那部分的代码进行了分析,最后 hook 了 upgrader_process_complete 这个函数,然后每次自动更新完成后都会刷新OPcache 的缓存。

目前只有自动刷新缓存这一个功能,如果有建议可以回复或者发 issue 惹!

代码库

<?php
/*
Plugin Name: WordPress OPcache Hook
Plugin URI: https://github.com/0xJacky/WordPress-OPcache-Hook
Description: WordPress 自动刷新 Opcache
Version: 0.1
Author: Jacky
Author URI: https://jackyu.cn/
License: GPL2
*/

function opcache() {
    return function_exists( 'opcache_reset' )
           && ini_get( 'opcache.enable' );
}

function opcache_hook() {
    if ( ! opcache() ) {
        return;
    }
    $files = opcache_get_status();
    if ( ! empty( $files['scripts'] ) ) {
        foreach ( $files['scripts'] as $file => $value ) {
            opcache_invalidate( $file );
        }
    }
}

// recheck opcache after updated core, plugins and themes.
add_filter( 'upgrader_process_complete', 'opcache_hook' );

已开源至 Github: https://github.com/0xJacky/WordPress-OPcache-Hook

文章最后修订于 2020年9月6日

WordPress
3
本文系作者 @Jacky 原创发布在 Jacky's Blog。未经许可,禁止转载。
2019 年终总结
上一篇
部署 CDN 后获取客户端真实 IP
下一篇

评论 (0)

再想想
暂无评论

近期评论

  • Jacky 发表在《Nginx UI》
  • kim 发表在《Nginx UI》
  • Jacky 发表在《留言板》
  • 菜鸟 发表在《留言板》
  • merlin 发表在《留言板》
3
Copyright © 2016-2025 Jacky's Blog. Designed by nicetheme.
粤ICP备16016168号-1
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习

搜索

  • Mac
  • Apple
  • OS X
  • iOS
  • macOS
  • Linux
  • 阿里云
  • WordPress
  • 运维
  • macOS Sierra

Jacky

Go Python C C++ | 弱冠之年 | 物联网工程
183
文章
193
评论
267
喜欢