php怎么清空varnish缓存文件?

发布时间:2020-12-03编辑:脚本学堂
本文介绍了php清空varnish缓存文件的方法,没法清空文件夹内容,只能清空指定链接缓存,需要的朋友参考下。

在用varnish做的前端缓存服务器中,定期清理varnish缓存文件是考虑在内的维护策略,这里分享一个php清理varnish缓存的方法。

对varnish不了解的朋友,可以参考如下文章:

1、清理缓存的代码:
 

复制代码 代码示例:

<?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 rn";
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。

2、代码:
 

复制代码 代码示例:
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 ~ ^/$ rn";
}else{
$out = " purge.url {$url} rn";
}
fputs ($fp, $out);
$out = fgets($fp , 4096);
fclose ($fp);
return $out;
}
}