我的问题: 配置了3台反向代理缓存服务器,如何让更新文章同时清理3台反代服务器上的缓存 目前更新文章只能清理一台,另外2台需要手动purge清理 源站的hosts里也添加了3台缓存服务器的IP指向域名
寻求解决(懂 PHP的帮忙改进下,留下收款方式20红包) 清理代码地址改成ip,然后轮训ip清理,php改用curl发起请求,传递HOST给ip。
- /** WordPress Nginx Proxy缓存清理简易版**/
-
- //初始化配置
- $logSwitch = 1; //配置日志开关,1为开启,0为关闭
- $logFile = ‘/tmp/purge.log’; //配置日志路径
-
- //缓存清理选项
- add_action(‘publish_post’, ‘clean_by_publish’, 99); //文章发布、更新清理缓存
-
- //远程清理方法
- function clean_remote_cache($url){
- if ($url == home_url()) {
- $uri = ‘/’;
- } else {
- $uri = wp_make_link_relative($url);
- }
- $clean_api = ‘https://www.baidu.com/purge’ . $uri;
- foreach([‘pc’, ‘mobile’] as $ua) {
- $resp = wp_remote_get($clean_api, array(‘sslverify’ => false, ‘user-agent’ => $ua));
- if (is_wp_error($resp)) {
- purgeLog("$clean_api $ua request failed: {$resp->get_error_message()}");
- } else {
- purgeLog("$clean_api $ua: {$resp[‘body’]}");
- }
- }
- }
-
- //文章发布清理缓存函数
- function clean_by_publish($post_ID){
- clean_remote_cache(get_permalink($post_ID)); //清理当前文章缓存
- clean_remote_cache(home_url()); //清理首页缓存
-
- //日志记录
- function purgeLog($msg)
- {
- global $logFile, $logSwitch;
- if ($logSwitch == 0 ) return;
- date_default_timezone_set(‘Asia/Shanghai’);
- file_put_contents($logFile, date(‘[Y-m-d H:i:s]: ‘) . $msg . PHP_EOL, FILE_APPEND);
- return $msg;
- }
复制代码
⠀⠀⠀⠀ |