日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > PHP > 正文

PHP批量清空nginx服務器緩存文件

2020-03-24 18:56:36
字體:
來源:轉載
供稿:網友
  • 我公司的一個客戶在國外訪問測試網站比較麻煩,因此我在一臺機器上安裝了一個nginx,并且使用nginx的proxy_cache模塊做緩存服務器,由于由于修改比較多,每次使用ngx_cache_purge清除cache只能清除幾個url,沒有很好的辦法去清除某個目錄的緩存。我研究了nginx的緩存html' target='_blank'>文件格式,發現可以從中提取出url出來,如下圖所示,url是以"KEY:"開頭以0x0A結尾


    我寫了一個程序能夠實現

    1.提交一批url進行清除對應的cache

    2.提交一批url目錄可以清除包含這些目錄的url,若是提交域名可以清除整站

    3.查看某個目錄下的緩存文件是否緩存上

    4.可以添加多個站點

    需要縣安裝ngx_cache_purge

    代碼如下

    <?php  /*   * 作者:yifangyou     日期:2012-07-21 14:43:00     功能:按照多個目錄或者多個URL的方式,清除nginx的cache,或者查看nginx cache 緩存     要求:nginx + ngx_cache_purge   */    //代理服務器的ip    $proxyIp="127.0.0.1";    //代理服務器端口      $proxyPort=80;      //代理服務器的緩存目錄      $cacheDir="/opt/proxy_cache_dir/";      $proxySites=array(      //用戶訪問的域名 => 被代理的實際網站的域名,若是都是80的話就是一樣即可       "http://www.test.com"=>"http://www.test.com"     );  //輸出文件  $output="";      $result=array();  $filedirs = array();  //只查看緩存文件,不清除  if($_POST["view"]){           $accessSite=$_POST["accessSite"];       $proxySite=$proxySites[$accessSite];           $clearUrls=array();           $clearUrls=explode ("/n",$_POST["dirs"]);           if($$proxySite){                   foreach($ds as $d){                           $d=str_replace($accessSite, $proxySite,$d);                           $clearUrls[]=$d;                   }           }           scan_dir($cacheDir);           $cacheurls = array();           foreach($filedirs as $filename){                  if(!is_file($filename)){                          continue;                  }                  $cacheUrl=getUrlFromCacheFile($filename);                                  if(count($clearUrls)){                                      $cacheurls[]=$cacheUrl;                                      continue;                                  }                  foreach($clearUrls as $clearUrl){                    $clearUrl=str_replace($accessSite, $proxySite,$clearUrl);                    $pos=strpos($cacheUrl,$clearUrl);                    // echo "$cacheUrl,$clearUrl,$pos<br/>";                    //比較http://www.b.com/a/b.jpg和http://www.b.com/a                    if($pos===0){                       $cacheurls[]=$cacheUrl;                       break;                     }                  }          }   }else //清除一批URL  if($_POST["urls"]){      $accessSite=$_POST["accessSite"];      $proxySite=$proxySites[$accessSite];      $output.="<div style='font-size:16px;font-weight:bold'>執行結果  /n/n";      $urls=explode ("/n",$_POST["urls"]);      foreach($urls as $url2){          $url=trim($url2);          $output.="------------------------$url start-----------------------------/n";          $pos = strpos($url, $accessSite);          if ($pos !== false && $pos==0) {              $url=str_replace($accessSite, $proxySite,$url);              if(purge($proxyIp,$proxyPort,$url)==0){                  $result[$url2]=0;              }else{                  $result[$url2]=1;              }          }else{              $output.="skip $url/n";              $result[$url2]=-1;          }          $output.="------------------------$url end -----------------------------/n";      }      $output.="/n";  }else//清除某個目錄下的所有文件  if($_POST["dirs"]){      $accessSite=$_POST["accessSite"];      $proxySite=$proxySites[$accessSite];      $clearUrls=array();      $clearUrls=explode ("/n",$_POST["dirs"]);      if($$proxySite){          foreach($ds as $d){              $d=str_replace($accessSite, $proxySite,$d);              $clearUrls[]=$d;          }      }      scan_dir($cacheDir);      $cacheurls = array();      foreach($filedirs as $filename){          if(!is_file($filename)){              continue;          }          $cacheUrl=getUrlFromCacheFile($filename);           foreach($clearUrls as $clearUrl){           $clearUrl=str_replace($accessSite, $proxySite,$clearUrl);              $pos=strpos($cacheUrl,$clearUrl);              // echo "$cacheUrl,$clearUrl,$pos<br/>";              //比較http://www.b.com/a/b.jpg和http://www.b.com/a              if($pos===0){                      $cacheurls[]=$cacheUrl;                      break;              }          }      }      if(count($cacheurls) > 0){          $accessSite=$_POST["accessSite"];          $proxySite=$proxySites[$accessSite];          $output.="<div style='font-size:16px;font-weight:bold'>執行結果  /n/n";          foreach($cacheurls as $url2){               $url=trim($url2);              $output.="------------------------$url start-----------------------------/n";              $pos = strpos($url, $accessSite);              if(purge($proxyIp,$proxyPort,$url)==0){                      $result[$url2]=0;              }else{                      $result[$url2]=1;              }              $output.="------------------------$url end -----------------------------/n www.it165.net";          }          $output.="/n";      }else{          foreach($clearUrls as $u){              $result[$u]=-1;          }      }  }  ?>   <!DOCTYPE html>  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>刷新squid</title>  <body>  <?php      if($result){          echo "<table border='1'><tr><td>URL</td><td>結果</td></tr>/n";          foreach($result as $url=>$isOk){              switch($isOk){                  case 0://成功                  $r="<font style='color:#90EE90'>成功</font>";                  break;                  case 1://成功                  $r="<font color='red'>失敗</font>";                  break;                  case -1://跳過                  $r="<font color='Yellow'>跳過</font>";                  break;              }              if($$proxySite){                  $url=str_replace($proxySite, $accessSite, $url);              }              echo "<tr><td>$url</td><td>$r</td></tr>/n";          }          echo "</table>/n";      }  ?>   <form action="" method="post">  <table >  <tr><td>選擇站點:</td></tr>  <tr><td>  <select name="accessSite" id="accessSite">      <?php          foreach($proxySites as $accessSite => $proxySite){          $isSelected=$_POST["accessSite"]==$accessSite?"selected":"";              echo "<option value='$accessSite' $isSelected>$accessSite</option>/n";          }      ?>  </select>  <script>      function view(){          location="?accessSite="+document.getElementById("accessSite").value+"&view=1";          }      </script>  <input type="checkbox" name="view" value="1" <?php echo $_POST["view"]?"checked":"";?>/><label for="view">只查看</label>  </td></tr>  <tr><td>輸入一組URL(一個一行):</td></tr>  <tr><td><textarea name="urls" style="width:1000px;height:200px;"><?php if($_POST["view"])foreach($cacheurls as $cacheurl){echo "$cacheurl/n";}?></textarea></td></tr>  <tr><td>刷新目錄(一個一行):</td></tr>  <tr><td><textarea name="dirs" style="width:1000px;height:200px;"></textarea></td></tr>  <tr><td><input type="submit" value="提交" /></td></tr>  </table>  </form>  <?php      echo $output;  ?>  </body></html>  <?php  //清除某個url  function purge($proxyIp,$proxyPort,$url)  {      global $output;      $host = parse_url($url);      $host = $host['host'];      $purge_url=str_replace("http://".$host,"/purge",$url);      if (emptyempty($proxyIp)) {          $proxyIp = gethostbyname($host);      }      if (emptyempty($proxyPort)) {          $proxyPort = "80";      }      $output.="正在從服務器".$proxyIp."更新".$url."/n";      $errstr = '';      $errno = '';      $fp = fsockopen ($proxyIp, $proxyPort, $errno, $errstr, 2);      if (!$fp)      {           $output.="連接失敗!";           return -1;      }      else     {          $out = "GET ".$purge_url." HTTP/1.1/r/n";          $out .= "Host:".$host."/r/n";          $out .= "Connection: close/r/n/r/n";          $output.="***********request start**************/n";          $output.=$out;          $output.="***********request end **************/n";          fputs ($fp, $out);          $output.="***********response start**************/n";          //是否更新成功          $isOk=false;          while($out = fgets($fp , 4096)){              if(strpos($out,"200 OK/r/n")!==FALSE){                  //更新成功                  $isOk=true;              }              $output.=$out;              if($out=="/r/n"){                  break;              }          }          fclose ($fp);          $output.="***********response end **************/n";                  flush();          if($isOk){              return 0;          }else{              return 1;          }      }  }   //遞歸掃描cache目錄下所有文件路徑  function scan_dir($dir) {          global $filedirs;          if (!is_dir($dir)) return false;          if ($dh = opendir($dir)) {              while (($file = readdir($dh)) !== false) {                  if ($file[0] == '.') continue;                  if($file=='swap.state')continue;                  $fullpath = "$dir/$file";                  $filedirs[] = $fullpath;                  if (is_dir($fullpath))                       scan_dir($fullpath);               }              closedir($dh);          }          return $filedirs;  }  //從cache文件中提取真實的URL  function getUrlFromCacheFile($filename){          //cache文件頭長度          $headerLen=0x1E;          $handle = fopen($filename, "rb");          if(!$handle){              return -1;           }          //讀取文件的前1k字節          $contents = fread($handle, 1024);          fclose($handle);          if(strlen($contents)<=$headerLen){              return -2;           }          //截掉文件頭          $contents=substr($contents,$headerLen);                    //cache文件的分隔符為/A          $pos=strpos($contents, chr(0x0A));          if($pos===FALSE){              return -3;           }          //獲取分隔符前的字符串          $contents="http://".substr($contents,0,$pos);          return $contents;  }  ?> 

    測試



    本文出自 “一方有” 博客PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲二区自拍| 亚洲欧洲日产国码av系列天堂| 国产一级在线免费观看| 国产福利免费观看| 久草中文在线观看| 天天综合日日夜夜精品| 中文字幕最新精品| 91精品蜜臀在线一区尤物| 欧美日韩国产专区| 一区二区三区在线免费| 欧美日韩国产综合久久| 欧美一级在线观看| www.精品视频| 亚洲国产福利| 日韩www在线| av中文在线播放| 999精品网| 亚洲欧美中文在线视频| 亚洲一区中文字幕在线观看| 国产 欧美 在线| 国产在线二区| 日韩不卡一二三区| 成人a在线观看| a视频在线播放| 亚洲视频资源在线| 国产视频二区| 欧美三级日韩三级| av高清一区| 91精品国产综合久久久久久| 国产黄色在线网站| 91精品婷婷国产综合久久竹菊| 中文字幕线观看| 国产偷国产偷亚洲清高网站| 国产精久久久久| 日韩欧美在线字幕| 91极品视频在线观看| 国产99亚洲| 极品久久久久久| 国精品产品一区| 拍真实国产伦偷精品| 美女在线视频一区| 日韩欧美99| 日韩欧美中文字幕精品| 久久精品视频免费看| 一区二区三区在线播放欧美| 国产中文伊人| 成人一区二区不卡免费| 日韩一级二级三级| 一区二区三区精品在线| 亚洲黄在线观看| 在线免费91| 国产在线中文字幕| 999在线视频| 欧美日韩性视频一区二区三区| 91精品在线观| 亚洲二区自拍| 亚洲中文字幕一区| 中文字幕亚洲乱码| wwww亚洲| 欧美日韩国产免费观看视频| av免费在线网站| 国产高清一区| 亚洲免费婷婷| 天天综合色天天| 午夜精品免费视频| 婷婷中文字幕一区三区| 欧美日韩中国免费专区在线看| 国产综合成人久久大片91 | 日韩三区免费| 日本精品免费观看高清观看| 91精品国产综合久久精品app| 日韩av综合在线观看| 久久永久免费视频| 黄色欧美日韩| 亚洲欧美中文字幕在线一区| 97久久精品午夜一区二区| 国产123在线| 国产乱码午夜在线视频| 精品国产99| 国产成人精品亚洲| 日韩在线中文| 亚洲成a人片在线www| 一级片在线免费看| 日韩视频第二页| 国产一级片在线| 久久精品一二三| 午夜高潮免费视频| 欧美日韩综合视频| 亚洲欧洲一区二区天堂久久| 欧美日韩成人一区二区| 国产91久久久久| 国产福利第一页| 欧美日韩国产一区在线| 午夜私人影院在线观看| 欧美日韩高清在线播放| 黄色欧美日韩| 黄色片免费在线| 一本久久a久久精品亚洲| 日韩精品欧美| 国产在线不卡av| 久久精品久久精品亚洲人| 欧美亚洲国产日韩| 精品一性一色一乱农村| 人妻一区二区三区免费| 精品成人久久av| 久久福利视频一区二区| 欧美日韩在线精品成人综合网| 一级特黄大欧美久久久| 午夜亚洲一区| 国产成人精品999在线观看| 国产福利在线看| 国产网站av| 久久手机免费观看| 美女黄a一级视频| 精品免费久久久| av免费看在线| 亚洲羞羞网站| 亚州福利视频| 日韩久久精品成人| 欧美日韩中文字幕日韩欧美| 一本久久a久久精品亚洲| 国产成人精品999| 日本亚洲欧美三级| 91精品国产手机| 国产香蕉精品视频| 在线观看免费国产成人软件| 日韩欧美在线综合| 91一区二区| 久久精品在线观看| 国产成人精品日本亚洲专区61| 91精品在线观看视频| 国产91久久久久蜜臀青青天草二 | 精品福利二区三区| 欧美日韩亚洲91| lutube成人福利在线观看| 日本国产一区| 欧洲精品久久久| 最近中文字幕在线中文高清版| 欧美中文字幕| 99精品999| 日韩欧美在线第一页| 高清国产一区| 国产卡1卡2卡三卡在线| 午夜视频在线观看一区| 久久精品蜜桃| 亚洲女人天堂色在线7777| 91精品国产91久久久久久不卡| 欧美日韩夫妻久久| 最近中文字幕第一页| 国产午夜精品视频免费不卡69堂 | 亚洲 欧美 日韩系列| 久久精品99国产国产精| 欧美 日韩 国产 在线| 久久久99久久精品欧美| 久久久久蜜桃| 伊人亚洲视频| 日韩欧美中文视频| 一区二区不卡在线| 久久精品在线免费观看| 日韩国产欧美在线视频| 午夜一区二区三区免费| 日韩亚洲欧美中文在线| 精品在线一区二区| 久久精品免费看| 婷婷精品进入| 日韩在线一区二区| 日韩欧美国产三级| 亚欧成人精品| 一区在线免费| 日韩国产一区三区| 欧美日韩亚州综合| 日韩精品高清不卡| 91精品国产综合久久久久久漫画| 色综合婷婷久久| 欧美日韩综合视频网址| 精品日本视频| 国产一二三精品| 国产欧美久久久精品影院| 亚洲成人7777| 三级网站免费观看| a视频免费看| 国产亚洲福利| 国产成人中文字幕| 中文字幕成人乱码在线电影| 天堂在线视频中文网| 国产免费久久| 日韩三级在线播放| 91色在线看| 欧美日韩国产一区在线| 久久久精品欧美| 国产99精品| 91精品在线观看入口| 国产在线拍揄自揄拍| 国产在线黄色| 亚洲欧美中文字幕| 精品成人久久久| 日韩欧美综合在线| 国产在线精品日韩| 欧美亚洲国产激情| 欧美中文字幕在线视频| 欧美中文字幕| 国产最顶级的黄色片在线免费观看| 欧美亚洲国产激情| 国产一级视频在线播放| 精品欧美久久久| 欧美日韩中文字幕在线观看| 在线手机中文字幕| 91精品视频观看| av亚洲免费| 久草视频在线看| 中文字幕一区不卡| 精品一性一色一乱农村| 欧美日韩国产一区| 日韩欧美国产三级| 中文字幕在线国产| 中文网丁香综合网| 日韩欧美中文在线| 91精品国产调教在线观看| 91精品国产综合久久久久久| 日韩在线视频精品| 三级网站免费观看| 日韩国产高清一区| 高清国产一区| 亚洲欧美韩国综合色| 精品无人国产偷自产在线| 国产一二三区精品视频| 精品亚洲永久免费| 美日韩精品免费视频| 久久久水蜜桃| 中文字幕 欧美日韩| 精品日韩欧美| 国产不卡的av| 亚洲热在线观看| 日韩久久精品网| 99视频一区| 日韩精品一区二区三区视频播放| 国产1区在线| 精品999视频| 91精品国产自产在线丝袜啪| 色综合婷婷久久| 欧美一级在线观看| 日韩视频第二页| 最近中文av字幕在线中文| 国产h片在线观看| 欧美亚洲国产日韩| 一区二区三区四区五区视频在线观看| 在线日韩精品视频| 精品国产91乱高清在线观看| 欧美日韩精品国产| 亚洲国产午夜精品| 国产91欧美| 国产亚洲污的网站| 91极品视频在线观看| 国产一二三四| 国产日韩av一区| 国产在线观看91| 亚洲高清中文字幕| 成年人看的羞羞网站| 日韩精品视频在线观看免费| 天天综合日日夜夜精品| 亚洲综合视频一区| а√天堂8资源中文在线| 久久欧美中文字幕| 国产一区精品| 日韩视频免费直播| 91av久久久| 欧美特黄一区| 国产欧美日韩高清| 精品国产1区2区3区| 中文字幕第一页在线| 中文字幕亚洲二区 | 91精品国产色综合久久久蜜香臀| 国产小视频免费在线观看| 国产h片在线观看| 久久夜色精品国产噜噜亚洲av| 日韩高清不卡一区二区| 精品亚洲永久免费| 欧美日韩国产综合久久 | 欧美日韩在线视频一区| 亚洲综合在线不卡| 国产在线高清精品| 一区二区三区精品在线观看| 日韩午夜黄色| 蜜臀国产一区| 国产一二三区精品视频| 欧美日韩三级在线观看| 日韩在线视频二区| 欧美日韩精品在线视频| 精品视频—区二区三区免费| 免费精品国产自产拍观看| 99久久精品国产成人一区二区| 亚洲电影中文字幕在线观看| 1区2区在线| 亚洲免费专区| 亚洲福利一区二区三区| 欧美日韩国产大片| 日韩一二三四区| 欧美三级免费观看| 欧美日韩成人综合| 欧美日韩国产一二| 亚洲中文字幕在线一区| 欧美熟妇乱码在线一区| 亚洲久草视频| 国产网站欧美日韩免费精品在线观看| 一区二区日韩免费看| 精品三级av| 一区二区三区高清在线| 91精品免费观看| 日韩 欧美 中文| 国产高清一级片| 精品国产1区2区3区| 亚洲成人7777| aaa免费看大片| 中文字幕亚洲欧美| 国产欧美中文字幕| 日韩精品三级| 韩国v欧美v日本v亚洲| 正在播放日韩精品| www.日韩免费| 伊人www22综合色| 久久久精品欧美| 久久69成人| 91精品网站| 久久精品免费看| 一区二区精品免费| 在线观看区一区二| 国产资源中文字幕| 国产欧美日韩精品在线| 国产黄在线观看| 精品久久久91| 色综合久久六月婷婷中文字幕| 久久夜色精品国产噜噜亚洲av| 91久久精品网| 日韩国产成人精品| eeuss一区| 中文字幕精品一区二| 亚洲娇小xxxx欧美娇小| lutube成人福利在线观看| 欧美日韩在线视频一区| 亚洲精华国产欧美| 最近中文字幕在线中文高清版| 欧美日韩久久久| 亚洲一区激情| 国产视频一区三区| 91吃瓜在线观看| 欧美日韩性视频一区二区三区| 国产成人综合精品| 91精品国产丝袜白色高跟鞋| 精品在线网站观看| 日韩视频在线一区二区三区| 国产欧美日韩精品在线观看| 国产高清在线一区| 亚洲va中文字幕| 欧美精选午夜久久久乱码6080| 视频一区日韩| 久久婷婷国产| 久久99精品久久久久婷婷| 蜜臀国产一区| 精品播放一区二区| 国产成人精品三级| 欧美三级在线视频| 一本一道综合狠狠老| 欧美日韩国产一中文字不卡| 欧美日韩国产专区| 视频在线一区二区| 精品不卡一区二区| 国产中文在线播放| 日韩精品视频在线看| 日韩欧美在线视频日韩欧美在线视频| 国产免费久久| 日韩在线视频网| 欧美日韩国产观看视频| 色综合影院在线| 国产日产一区二区| 久久91精品久久久久久秒播| 久99久视频| 一二三区精品视频| 最新中文字幕在线| 欧美日韩国产不卡在线看| 国产男女av| 亚洲一区不卡在线| 久久69成人| 99视频在线看| 国产成人日日夜夜| 国产中文在线| 国产成人精品日本亚洲专区61| aa国产成人| 不卡一区二区三区视频| 999精品在线| 国产三级视频在线播放线观看| 国产视频一区三区| 日韩久久精品视频| 欧美日韩中文国产| 亚洲女同中文字幕| 国产黄在线观看免费观看不卡| 成人禁用看黄a在线| 日韩亚洲一区在线| 中文字幕在线播放一区| 91精品啪在线观看国产60岁 | 国产黄色在线看|