PHP Purge Script for Varnish 3.xx

สวัสดีครับ วันนี้ พอดีผม modify ตัว Purge URL ที่เป็น PHP Script สำหรับ
Varnish 3.xx มาใช้งาน ก็เลยเอามาแบ่งปันกันครับ สำหรับการใช้งานก็คือ
ส่ง Parameter มาแบบนี้ครับ ..
vpurge.php?url=/xxx.html&host=test.com

vpurge.php


# get param
$url = $_GET["url"];
$host = $_GET["host"];

  # Varnish 3.xx IP
  $ip = "127.0.0.1";
  # T port
  $port = "6082";

  $timeout = 1;
  $verbose = 1;

  # inits
  $sock = fsockopen ($ip,$port,$errno, $errstr,$timeout);
  if (!$sock) { echo "connections failed $errno $errstr"; exit; }

  if ( !($url || $host) ) { echo "No params"; exit; }

  stream_set_timeout($sock,$timeout);

  #$pcommand = "purge";
  # Send command
  #$pcommand .= ".hash $url#$host#";

  ### PHP Purge for Varnish 3.xx      ###
  ### Modify by: Ton 2011-09-05       ###
  ### http://ton.packetlove.com/blog/ ###
  $pcommand = "ban";
  $pcommand .= " req.http.host == $host && req.url ~ ^$url.*$";

  put ($pcommand);
  put ("quit");

  fclose ($sock);

  function readit() {
    global $sock,$verbose;
    if (!$verbose) { return; }
    while ($sockstr = fgets($sock,1024)) {
      $str .= "rcv: " . $sockstr . "
"; } if ($verbose) { echo "$str\n"; } } function put($str) { global $sock,$verbose; fwrite ($sock, $str . "\r\n"); if ($verbose) { echo "send: $str
\n"; } readit(); }

ง่ายๆ เพียงเท่านี้ แค่เราส่ง parameter มาก็ทำการ purge URL ที่ต้องการได้แล้วครับ 🙂