PHP 清空varnish 缓存 包括指定站点下的

  没法清空文件夹内容 只能清空指定链接缓存

<?php



function clearVarnish($ip,$url,$host=null){

    

    $errstr = '';

    $errno = '';

    $varnist_arr = isset($host) ? $host : C('VARNISH_LIST');

    foreach ($varnist_arr as $v){

        $fp = fsockopen ($ip, 2000, $errno, $errstr, 2);

        if (!$fp) {

            return false;

        } else {

            $out = "purge.url $url \r\n";

            fputs ($fp, $out);

            $out = fgets($fp , 4096);

            fclose ($fp);

            return $out;

        }

    }

}

?>

需要注意的是:  传入进来的 url是不能带参数的  如:www.baidu.com/?tn=sougou

因为 purge.url 后清空的是 正则表达式 可以改成 www.baidu.com/(.?)sougou 这样就可以了。

 

当一台varnish 缓存多个站点内容需要清除指定站点URL 或者单纯清除 站点首页时 需使用purge 而不是purge.url

 

function varnish_purge($ip, $host='', $url) {

        $errstr = '';

        $errno = '';

        $fp = fsockopen ($ip, 2000, $errno, $errstr, 2);



        if (!$fp) {

                return $errno;

        }else {

              if(!empty($host)){

                 $out = "purge req.http.host == {$host} && req.url ~ ^/$ \r\n";

              }else{

                 $out = " purge.url {$url} \r\n";

              }

              fputs ($fp, $out);

              $out = fgets($fp , 4096);

              fclose ($fp);

              return $out;  

        }

}

你可能感兴趣的:(varnish)