Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7387207
  • 博文数量: 1755
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16227
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1755)

文章存档

2024年(1)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2008-08-15 15:50:07

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/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
阅读(1521) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~