亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP批量清空nginx服務(wù)器緩存文件

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


    我寫了一個程序能夠?qū)崿F(xiàn)

    1.提交一批url進行清除對應(yīng)的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   */    //代理服務(wù)器的ip    $proxyIp="127.0.0.1";    //代理服務(wù)器端口      $proxyPort=80;      //代理服務(wù)器的緩存目錄      $cacheDir="/opt/proxy_cache_dir/";      $proxySites=array(      //用戶訪問的域名 => 被代理的實際網(wǎng)站的域名,若是都是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'>執(zhí)行結(jié)果  /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'>執(zhí)行結(jié)果  /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>結(jié)果</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.="正在從服務(wù)器".$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字節(jié)          $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編程

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

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    无码人妻丰满熟妇区五十路百度| 欧洲成人一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产丝袜精品丝袜| 午夜av一区| 日韩一区二区三区四区五区六区| 精品国产一区二区三区不卡| 日韩免费av| 国产蜜臀一区二区打屁股调教| 色九视频91| 精品国产无码一区二区三区| 精人妻无码一区二区三区| 欧美在线视频二区| 少妇性饥渴无码a区免费| 精品三级av| 免费看的av| 性欧美一区二区三区| 亚洲欧洲一区二区三区在线观看| 波多野结衣在线电影| 日本 国产 欧美色综合| 在线观看一区日韩| 57pao成人国产永久免费| 娇小的粉嫩xxx极品| 欧美大香线蕉线伊人久久| 免费男女羞羞的视频网站主页在线观看| 亚洲综合在线第一页| 日本午夜精品久久久久| 影音先锋国产精品| 亚洲欧美在线磁力| 国产精品男女猛烈高潮激情| 四虎5151久久欧美毛片| 欧美做暖暖视频| 91在线观看免费高清完整版在线观看| 亚洲成va人在线观看| 亚洲伦理电影| 亚洲高清视频在线观看| 日韩综合精品| 国产精品影视在线| 高h震动喷水双性1v1| 亚洲精品一区二区三区区别| 四虎影视免费看电影| 亚洲第一偷拍网| 亚洲丝袜在线观看| jizzjizzjizz在线观看| 国产精品无码电影| 中文字幕国产精品久久| 在线观看精品视频看看播放| 国产免费一区二区| 亚洲免费网站在线观看| 久久久精品视频网站| 色一情一欲一爱一乱| 成人精品视频在线观看| 色欲狠狠躁天天躁无码中文字幕| 欧美做受高潮电影o| 每日更新在线观看av| 欧美理论片在线| 国产精品高潮呻吟久久av野狼| 欧美黄色免费观看| 色欲久久久天天天综合网| 深夜福利在线观看直播| 久久香蕉国产| 国产精品久久影视| 成人一级黄色片| 日韩夫妻性生活xx| 激情综合网五月天| 午夜精品美女自拍福到在线| 国产精品网红福利| 亚洲福利在线看| 91官网在线免费观看| 国产精品白浆流出视频| 日本成人一级片| 欧美一级一区二区| 国产成人91久久精品| 成人h动漫免费观看网站| 欧美肥老妇视频| 美女黄色免费看| 搡老女人一区二区三区视频tv| 国产一区二区三区四区尤物| 免费在线视频你懂的| 精品三区视频| 成人久久久久爱| 日韩中文影院| 国产精品久久久久久久久动漫| 国产视频久久| 午夜精品区一区二区三| 日本ー区在线视频| 三级外国片在线观看视频| 欧美黑人一区二区三区| 欧美肉大捧一进一出免费视频| 欧美性受xxxx黒人xyx性爽| 免费看污视频的网站| av片中文字幕| 你懂的视频在线观看资源| 欧美性受xxxx黑人猛交88| 国产精品网站导航| 午夜免费福利视频| 秋霞国产午夜精品免费视频| 91精彩视频| 琪琪久久久久日韩精品| 免费看啪啪网站| 日韩高清在线| 欧美天堂在线| 亚洲精品天堂在线| 亚洲午夜精品久久久久久浪潮| 懂色av蜜臀av粉嫩av分享吧最新章节| 免费美女久久99| www.av麻豆| 老司机午夜免费精品视频| 国产精品久久久久久久久久久久午夜片| 自拍偷自拍亚洲精品被多人伦好爽| 99国产精品久久久久久久成人| 欧美新色视频| 91免费国产网站| 蜜桃av噜噜一区二区三区麻豆| 精品人妻一区二区三区日产| 国产精品一区二区欧美| 三级男人添奶爽爽爽视频| 午夜一区二区三区四区| 亚洲v日韩v综合v精品v| 激情成人在线视频| 伊人五月天婷婷| 亚洲黄页在线观看| 亚洲精品一区中文字幕电影| 黑人乱码一区二区三区av| 在线影视一区| 熟女性饥渴一区二区三区| 97久久精品一区二区三区的观看方式| 免费又爽又黄禁片视频1000片| 3dmax动漫人物在线看| 人人干在线观看| 亚洲色欲色欲www| 天天摸夜夜操| 久久手机精品视频| 久久久精品性| 在线视频1卡二卡三卡| 91色|porny| 九九视频在线免费观看| 欧美一区二区三区人| 91免费看片在线观看| 国产日韩在线免费观看| 精品一区二区三区自拍图片区| 在线亚洲精品福利网址导航| 欧美三级电影在线播放| 亚洲精品成人在线播放| 美女网站免费看| 国产精品海角社区在线观看| 一本大道香蕉久在线播放29| 波多野结衣久久高清免费| 久久99精品久久久久久久久久久久| 91日韩精品视频| 亚洲综合国产| 在线观看视频二区| 国产在线播放观看| 亚洲日本视频| 欧美大交乱xxxx| 国产91精品最新在线播放| 国产日韩成人精品| 国产后入清纯学生妹| 在线观看亚洲一区| 欧美a在线播放| 欧美一级爆毛片| 激情综合网婷婷| 免费成人美女在线观看| 国产1区2区3区中文字幕| h视频在线看| 欧美午夜不卡视频| mm视频在线视频| 中国一级特黄录像播放| 亚洲欧洲高清| 亚洲av片不卡无码久久| 亚洲六月丁香色婷婷综合久久| 中文字幕一区二区中文字幕| 国产日韩欧美精品在线观看| 日精品一区二区三区| 欧美综合亚洲图片综合区| 国产美女视频一区二区三区| 4虎在线播放1区| 欧美精品做受xxx性少妇| 久久久91精品国产一区二区三区| 在线播放国产一区中文字幕剧情欧美| 亚洲字幕av一区二区三区四区| av网站观看| 激情综合激情| 男人艹女人网站| 黄页视频在线观看| 成av人片一区二区| 中文乱码人妻一区二区三区视频| 福利片一区二区| 一区二区精品国产| 国产成人精品一区二三区四区五区| 国产乱视频在线观看| 免费不卡亚洲欧美| 亚洲成人中文字幕在线| 成人自拍视频网站| 97视频在线观看网站| 久久久亚洲一区| 超碰国产在线观看| 久久香蕉精品视频| 欧美中文在线免费| 9久久婷婷国产综合精品性色| 日本久久精品| 无码精品人妻一区二区| 久草免费新视频| 亚洲一区二区三区成人在线视频精品| 99re在线视频播放| 欧美xfplay| 国产自产视频| 欧美乱大交xxxx| 欧美精品在线视频| 国产精品冒白浆免费视频| 色激情天天射综合网| 色av成人天堂桃色av| 综合久久国产九一剧情麻豆| 性少妇bbw张开| 日本伊人色综合网| 神马久久久久久久久久久| 福利视频网站一区二区三区| 国产精品无码一区二区三| eeuss影院www免费视频| 少妇喷水在线观看| 亚洲欧美日韩色| 欧美色女视频| 99久久综合狠狠综合久久aⅴ| 91视频网入口| 九色91蝌蚪在线| 日本在线不卡一区二区| 欧美黑人疯狂性受xxxxx野外| 国产毛片久久| 蜜桃精品一区二区| 国产在线精品一区二区三区不卡| 人成在线视频| 日韩在线播放中文字幕| 小黄鸭精品aⅴ导航网站入口| 欧美日韩一区在线观看视频| 精品久久久中文字幕| 亚洲精品mv在线观看| 成年免费网站| 女人裸体免费网站| 国产乱色在线观看| 懂色中文一区二区三区在线视频| 岛国中文字幕在线| 国产高清视频一区二区| 91九色porn| 亚洲午夜久久| 国产亚洲精品免费| 国产一区二区三区免费不卡| 中文字幕中文字幕在线中一区高清| 日韩理论片网站| 亚洲永久精品ww.7491进入| 国产精品伦理一区二区三区| 欧美日韩国产一区二区三区不卡| 中文字幕欧美日本乱码一线二线| 欧美日韩视频一区二区| 欧美极品一区| 亚洲国产无码精品| www.日韩精品| 欧美色就是色| 免费a级人成a大片在线观看| 国产一区在线播放| 噜噜噜狠狠夜夜躁精品仙踪林| 国产精品福利网| 久久精品国产99久久| 日本熟妇一区二区三区| 久热精品在线视频| 国产一级一片免费播放放a| 欧美电影免费观看网站| 久久久人人爽| 精品国产美女福利到在线不卡| 人人爽久久涩噜噜噜网站| 亚洲一区二区动漫| 伊人久久大香线蕉精品组织观看| 精品无人区一区二区| 国产精品欧美久久| 麻豆一区二区在线| 亚洲黄色a级片| 和岳每晚弄的高潮嗷嗷叫视频| 国产成人无码精品久在线观看| 国产亚洲一区二区三区在线观看| 国产三级免费观看| 欧美日韩精品一区二区天天拍小说| 国产一级视频在线| 秋霞电影网一区二区| 久热精品视频在线| а√中文在线天堂精品| 伊人国产视频| 亚洲精品久久久久久久久久久久| 白白在线精品| 亚洲欧洲av一区二区| 思思久久99热只有频精品66| **精品中文字幕一区二区三区| 9i看片成人免费高清| 国产成人精品亚洲日本在线桃色| 国产乱人乱偷精品视频| 在线观看视频日韩| 38少妇精品导航| 开心激情综合| 亚洲肉体裸体xxxx137| 亚洲成人7777| 亚洲精品午夜| 日韩三级毛片| 国产精品久久久久久婷婷天堂| 老司机2019福利精品视频导航| 日韩美一区二区三区| 91久色porny| 美女隐私在线观看| 久久免费一级片| 免费日韩在线视频| 亚洲精品大片| 94色蜜桃网一区二区三区| 国产精品人人做人人爽| 日韩精品国产欧美| 久久av影院| 最近中文字幕免费观看| 国产精品人人做人人爽人人添| 精品一区二区久久久| 最新中文字幕一区二区三区| 99久久99精品久久久久久| 亚洲精品久久久蜜桃动漫| 国产在线视频欧美一区| 99视频精品视频高清免费| 亚洲成人高清在线| 99re久久最新地址获取| 久久免费黄色网址| 一级片视频在线观看| 亚洲 日韩 国产第一区| 欧美精品一区三区| 国产中文字幕91| 欧洲在线视频一区|