嘟嘟社区

[nginx] nginx反代缓存清理PHP代码咨询


我的问题:
配置了3台反向代理缓存服务器,如何让更新文章同时清理3台反代服务器上的缓存
目前更新文章只能清理一台,另外2台需要手动purge清理
源站的hosts里也添加了3台缓存服务器的IP指向域名

寻求解决(懂 PHP的帮忙改进下,留下收款方式20红包)
清理代码地址改成ip,然后轮训ip清理,php改用curl发起请求,传递HOST给ip。

  1. /** WordPress Nginx Proxy缓存清理简易版**/
  2. //初始化配置
  3. $logSwitch  = 1;                  //配置日志开关,1为开启,0为关闭
  4. $logFile    = ‘/tmp/purge.log’;   //配置日志路径
  5. //缓存清理选项
  6. add_action(‘publish_post’, ‘clean_by_publish’, 99); //文章发布、更新清理缓存
  7. //远程清理方法
  8. function clean_remote_cache($url){
  9.     if ($url == home_url()) {
  10.             $uri = ‘/’;
  11.     } else {
  12.             $uri = wp_make_link_relative($url);
  13.     }
  14.     $clean_api = ‘https://www.baidu.com/purge’ . $uri;
  15.     foreach([‘pc’,  ‘mobile’] as $ua) {
  16.         $resp = wp_remote_get($clean_api, array(‘sslverify’ => false, ‘user-agent’ => $ua));
  17.         if (is_wp_error($resp)) {
  18.             purgeLog("$clean_api $ua request failed: {$resp->get_error_message()}");
  19.         } else {
  20.             purgeLog("$clean_api $ua: {$resp[‘body’]}");
  21.         }
  22.     }
  23. }
  24. //文章发布清理缓存函数
  25. function clean_by_publish($post_ID){
  26.     clean_remote_cache(get_permalink($post_ID)); //清理当前文章缓存
  27.     clean_remote_cache(home_url()); //清理首页缓存
  28. //日志记录
  29. function purgeLog($msg)
  30. {
  31.     global $logFile, $logSwitch;
  32.     if ($logSwitch == 0 ) return;
  33.     date_default_timezone_set(‘Asia/Shanghai’);
  34.     file_put_contents($logFile, date(‘[Y-m-d H:i:s]: ‘) . $msg . PHP_EOL, FILE_APPEND);
  35.     return $msg;
  36. }

复制代码

⠀⠀⠀⠀

分别再绑不一样的子域区分一下不行吗

hjvn2211445 发表于 2021-11-27 21:13
分别再绑不一样的子域区分一下不行吗

没有子域名⠀