memcache的长连接表现。他是如何被重用的。

转载 2007年10月06日 01:46:00
原贴:http://club.phpe.net/index.php?act=ST&f=15&t=14764&s=d60850b1e9f560fed16202431991de22

作者  memcache的长连接表现。他是如何被重用的。
flytod


新手上路


组别: 普通会员
发贴: 3
积分: 0



Posted:2006/12/07 12:50     Find all post by this member Copy post text,only for IE users 添加到PHPMORE知识书签
看了phpmore7,所有又回头看了一下手册里的memcache说明。发现一个以前没有注意到的pconnect()。
所以做了一下测试。

服务器:ubuntu 6.06,apt-get 安装的memcached
客户端:winxp,php 5.1.4 ,下载的php_memcache.dll

  view plain | print | ?
 
1 <?php 
2 $tmp_object = "cccccccccccc"
3  
4 $memcache_api = new Memcache; 
5 $memcache_api->pconnect('10.10.0.212', 11211); 
6 sleep(10); //这里sleep 10s,是为了在服务器端netstat 
7 print $memcache_api->add('key1'$tmp_object, false, 60); 
8 var_dump($memcache_api->get('key1')); 
9 ?> 


浏览器打开页面后,在服务器端通过# netstat -a |grep 11211查看
使用connect,打开一个窗口,结果是:
QUOTE
tcp        0      0 10.10.0.212:11211        10.10.0.4:2651          ESTABLISHED

浏览完成,再查看,链接已经没有了。
QUOTE
null


打开两个窗口,看见两个不同的链接,本地端口于上次2651不同,证明是新建立的
QUOTE
tcp        0      0 10.10.0.212:11211        10.10.0.4:2655          ESTABLISHED
tcp        0      0 10.10.0.212:11211        10.10.0.4:2653          ESTABLISHED



更换成pconnect后:
一个窗口浏览时:
QUOTE
tcp        0      0 10.10.0.212:11211        10.10.0.4:2659          ESTABLISHED


浏览结束后,再查看,链接依然存在

QUOTE
tcp        0      0 10.10.0.212:11211        10.10.0.4:2659          ESTABLISHED


新开两个窗口浏览,重用了前一个,再新建立了一个。

QUOTE
tcp        0      0 10.10.0.212:11211        10.10.0.4:2659          ESTABLISHED
tcp        0      0 10.10.0.212:11211        10.10.0.4:2662          ESTABLISHED


这个长链接是如何被重用的,是怎么在两次http请求之间保持的?是否和mysql的pconnect()是同样性质的吗?
static


正式会员


组别: 普通会员
发贴: 805
积分: 18



Posted:2006/12/07 20:06   Find all post by this member Copy post text,only for IE users 添加到PHPMORE知识书签
没读过代码, 估计一样, 因为没别的可能性
Ben


正式会员


组别: 普通会员
发贴: 93
积分: 2



Posted:2006/12/15 12:29       Find all post by this member Copy post text,only for IE users 添加到PHPMORE知识书签
没有看过 mysql pconnect的代码,不清楚 mysql pconnet 的实现,只是这两天在考虑给 memcache 添加一个同步啊、日志啊什么的功能,所以就瞅了下代码。

persistent 为 false 时的表现是很好理解的,请求来了就连接。请求完毕就关闭对 memcache server 的连接。至于 persistent 为 true 的情况,处理也是比较简单的。一个 memcache 的连接 hash 值主要跟 host、port 以及 timeout 有关。有一个连接请求到来时就根据host 和 port 生成一个 hash 值,然后查表。有则取出,没有则新建一个连接,新建后放入连接池。请求关闭时并不关闭对 memcache server 的连接,而是把这个连接(在做一些状态更新后)放入连接池(就是前面提到的那个 hash 表),供下次查询使用。

that's all~ smile_big.gif



是否我消失了,你才会知道我的存在……
 

关于Memcache的连接

addServer 在说Memcache的长连接(pconnect)和短连接(connect)之前要先说说Memcache的addServer,Memcache的addServer是增加一个服务器到...
  • moqiang02
  • moqiang02
  • 2014年06月25日 06:44
  • 2680

memcache设置最大值最大键值

Memcached存储单个item最大数据是在1MB内,如果数据超过1M,存取set和get是都是返回false,而且引起性能的问题。 我们之前对排行榜的数据进行缓存,由于排行榜在我们所有sql s...
  • xubaoguo
  • xubaoguo
  • 2013年11月08日 15:11
  • 2935

Memcache 命令行操作

1、启动Memcache 常用参数      -p       设置TCP端口号(默认不设置为: 11211)      -U       UDP监听端口(默认: 11211, 0 时关闭) ...
  • qq_32562501
  • qq_32562501
  • 2017年02月20日 16:27
  • 1609

继上一版留言本并加入memcache缓存和pdo连接方式

  • 2010年07月14日 10:33
  • 105KB
  • 下载

memcache连接数限制

由于客户端设置连接数过少,经常有超时现象,把服务器改为 2048 ,试试好些不. 经测试,的确好的多了. 但是估计还不够, 再增加到30720看看,每个 10240个 ----------...
  • liuzx32
  • liuzx32
  • 2012年07月27日 15:10
  • 1197

通过telnet连接查看memcache服务器

memcache作为一款优秀的进程外缓存,常常被运用于高并发系统架构中。这里主要谈谈怎么通过telnet工具,查看memcache运行状况并对其key进行管理维护。假设memcache安装目录:/us...
  • J080624
  • J080624
  • 2017年02月14日 16:32
  • 201

通过telnet连接查看memcache服务器

memcache作为一款优秀的进程外缓存,常常被运用于高并发系统架构中。这里主要谈谈怎么通过telnet工具,查看memcache运行状况并对其key进行管理维护。假设memcache安装目录:/us...
  • clh604
  • clh604
  • 2013年11月15日 17:09
  • 21879

python连接MySQL、MongoDB、Redis、memcache等数据库的方法

这篇文章主要介绍了python连接操作MySQL、MongoDB、Redis、memcache等数据库的方法,大家可以参考使用 用Python写脚本也有一段时间了,经常操作数据库(MySQL...
  • toplover2
  • toplover2
  • 2013年11月17日 07:28
  • 647

通过telnet连接查看memcache服务器

memcache作为一款优秀的进程外缓存,常常被运用于高并发系统架构中。这里主要谈谈怎么通过telnet工具,查看memcache运行状况并对其key进行管理维护。假设memcache安装目录:/us...
  • kankan231
  • kankan231
  • 2014年01月22日 10:56
  • 4559

php_memcache.dll

  • 2017年11月02日 13:10
  • 145KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:memcache的长连接表现。他是如何被重用的。
举报原因:
原因补充:

(最多只允许输入30个字)