发新话题
 搜藏 打印 该页面添加到 Mister Wong

Squid文件手动刷新

Squid文件手动刷新

Squid加速是大访问量下的一个常用加速技术。对于动态产品,需要有更新接口才能保证用户体验。
Squid中需调整配置,打开控制权限。
acl manage src THE_IP/THE_MASK
acl Purge method PURGE
http_access allow manage Purge
默认状态下,PURGE是Deny的。
重启后,可以在Telnet下测试一下:
telnet my_squid 80
PURGE
http://video.club.sohu.com/200609/1159196510nagrw.gif
HTTP/1.0 Accept: */*

接下来,写一个服务,用于刷新:
/**
* Need php with --enable-socket
* Param:
* $ip $port $out
* return $in
*/
function socket_service($ip, $port='80', $out=""){
        if(trim($ip)=="")return "Error: without dest host!";
        if($out=='') $out="GET / HTTP/1.1rnHost: $iprnrn";        // Create a new socket
        $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);        // An example list of IP addresses owned by the computer
        $sourceips['internal']    = '192.168.103.53';
        $sourceips['external']          = '61.135.151.40';        // Bind the source address
        socket_bind($sock, $sourceips['internal']);        // Connect to destination address
        socket_connect($sock, $ip, $port);
trace($out);
        // Write
        socket_write($sock, $out);        // Read
        $return=socket_read($sock,100000);
        // Close
        socket_close($sock);        // Return
        return $return;
}

在更新内容的PHP程序中,调用这个函数,$url是显示内容的页面地址:
[php code]
$squid_dv=array("10.10.82.83","10.10.82.87");
$request="PURGE $url HTTP/1.0rnAccept: */*rnrn";;
foreach($squid_dv as $key => $ip){
$result=socket_service($ip,80,$request);
trace($result);
}
在这里例子里面,是两台Squid服务器,我分别调用了一下。如果Squid服务器很多,可能给服务器造成较大负担,就不合适了。这种Squid群,可以配置成不同的层次。有机会下次再写。
~~呵呵~~
欢迎转贴,请注明来处。【本帖地址】:
http://jimmy.club.sohu.com/blog/post/1/99

本文由hew 发布于Linuxsky 论坛,网址:http://www.linuxsky.org/bbs/thread-7167-1-1.html

你的鼓励,我的动力.
做人厚道,看贴回贴.
my linux blog

TOP

发新话题