สวัสดีครับ วันนี้ พอดีผม 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 ที่ต้องการได้แล้วครับ 🙂