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

WordPress OPcache Hook

Jacky
4月 7, 2020项目阅读 2,803

前言

服务器上开了 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
下一篇
再想想
暂无评论
近期评论
  • Jacky发表在《Nginx UI》
  • daiwenzh5发表在《Nginx UI》
  • Jacky发表在《Nginx UI》
  • daiwenzh5发表在《Nginx UI》
  • Jacky发表在《Nginx UI》
3
  • 3
  • 0
Copyright © 2016-2023 Jacky's Blog. Designed by nicetheme.
粤ICP备16016168号-1
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
# Mac # # Apple # # OS X # # iOS # # macOS #
Jacky
PHP C C++ Python | 舞象之年 | 物联网工程
174
文章
169
评论
267
喜欢