请问php-memcache怎么通过UDP连接memcached ?
我使用了MemcachePool,代码如下:
$memcache = new MemcachePool;
$memcache->connect('192.168.0.169', 0, 11223);
(注:memcached进程:/opt/memcached1.4.4/bin/memcached -d -m 32 -u root -l 192.168.0.169 -U 11223 -p 0 -c 1024)
上面代码执行返回提示:Warning: MemcachePool::connect() [memcachepool.connect]: Can't connect to 192.168.0.169:0, Failed to parse address "192.168.0.169" (0) in /data/xiaoweb/WRG/game_login/test.php on line 5另外如果我把memcache进程同时开放UDP,TCP端口,connect连接之后,默认使用的是TCP协议,请问哪位大侠知道怎样使用UDP协议与memcached数据交互

解决方案 »

  1. 因为TCP要三次握手,四次关闭,性能相比UPD低,而且在请求次数比较高的时候,连接失败次数较多!
      

  2. 链接 UDP socket  是会很容易出错的。一般情况下不建议!~memcached -U 11211 -d   11211 UDP端口支持~您可以自定义去设置,然后使用端口
      

  3. 这个地方不需要您去操心。这点损失完全可以忽略。要是觉得不够满意的话可以换sctp
    UDP不可靠一般都不用UDP的
      

  4. 谢谢楼上大虾们建议。
    其实我也觉得用UDP不好,但是考虑到是局域网内,UDP传输丢包的几率不大,而为了追求支持更高的并发请求,所以上级比较坚持用UDP,所以我现在在研究局域网内使用UDP时传输的可靠性。
    可是现在卡在了使用php memcache连接memcached这里,我已经开了UDP端口,可是连接不上,有哪位大虾能给一个UDP连接memcached的列子么?谢谢啦!连接不上问题重现:
    php代码:
    $memcache = new MemcachePool; 
    $memcache->connect('192.168.0.169', 0, 11223); memcached进程:/opt/memcached1.4.4/bin/memcached -d -m 32 -u root -l 192.168.0.169 -U 11223 -p 0 -c 1024 PHP代码执行结果:Warning: MemcachePool::connect() [memcachepool.connect]: Can't connect to 192.168.0.169:0, Failed to parse address "192.168.0.169" (0) in /data/xiaoweb/WRG/game_login/test.php on line 5重开memcached进程:/opt/memcached1.4.4/bin/memcached -d -m 32 -u root -l 192.168.0.169 -U 11223 -p 11223 -c 1024(增开TCP进程)php代码执行结果:正常,但是默认跑的TCP连接!
      

  5. memcache用udp只能读,写还是tcp的,你需要两个端口都打开才行
      

类似问题 »