Heim >Backend-Entwicklung >PHP-Tutorial >php怎么清空varnish缓存文件?

php怎么清空varnish缓存文件?

WBOY
WBOYOriginal
2016-07-25 08:52:111053Durchsuche
  1. function clearVarnish($ip,$url,$host=null){

  2. $errstr = '';

  3. $errno = '';
  4. $varnist_arr = isset($host) ? $host : C('VARNISH_LIST');
  5. foreach ($varnist_arr as $v){
  6. $fp = fsockopen ($ip, 2000, $errno, $errstr, 2);
  7. if (!$fp) {
  8. return false;
  9. } else {
  10. $out = "purge.url $url \r\n";
  11. fputs ($fp, $out);
  12. $out = fgets($fp , 4096);
  13. fclose ($fp);
  14. return $out;
  15. }
  16. }
  17. }
  18. ?>
复制代码

注意,传入进来的 url是不能带参数的,例如:www.baidu.com/?tn=sougou 因为 purge.url 后清空的是 正则表达式 可以改成 www.baidu.com/(.?)sougou 即可。

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

2、代码:

  1. function varnish_purge($ip, $host='', $url) {
  2. $errstr = '';
  3. $errno = '';
  4. $fp = fsockopen ($ip, 2000, $errno, $errstr, 2);
  5. if (!$fp) {
  6. return $errno;
  7. }else {
  8. if(!empty($host)){
  9. $out = "purge req.http.host == {$host} && req.url ~ ^/$ \r\n";
  10. }else{
  11. $out = " purge.url {$url} \r\n";
  12. }
  13. fputs ($fp, $out);
  14. $out = fgets($fp , 4096);
  15. fclose ($fp);
  16. return $out;
  17. }
  18. }
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn