Home > Backend Development > PHP Tutorial > java 和 php共享memcached数据注意有关问题

java 和 php共享memcached数据注意有关问题

WBOY
Release: 2016-06-13 13:06:20
Original
843 people have browsed it

java 和 php共享memcached数据注意问题
在很多时候,一台memcached server中的数据,需要被不同语言的客户端访问。

在理想的情况下,一种语言写,其他语言读可能不会造成一些兼容的问题。

日前遇到了java和php共享数据的问题,php写入的时候,java可以读取;java写入的,php读取时候数据解析有误。

分析memcached中的数据:
telnet memcache-srv1 11211
get key[enter]

发现php写入,和java写入的数据存在一点差异。

php:VALUE key 1 250
java:VALUE key 0 250

   大家发现了吧,就是一个状态位不一致导致。在java中,这个状态为用于压缩等其他标识,而在php中,用于作为判断php的对象(比如:array等)。
检查php代码,发现它是直接把array对象,传给php memcached 函数,由其进行序列化,以及加入标识,在读取的时候,其直接反馈相应的php对象。

   set:
   $out = array();
   $out['field1'] = "me";
   $mc->set($key, $out, NULL, 12 * 3600);
   
   get:
   $out=$mc->get($key);
   echo $out['field1'];
Copy after login

解决方案:
使用传给php memcached客户端的时候,先序列化好。取的时候,在反序列化一次。
   set:
   $out = array();
   $out['field1'] = "me";
   $mc->set($key, serilized($out), NULL, 12 * 3600);
   
   get:
   $out=$mc->get($key);
   echo unserilized($out)['field1'];
   
Copy after login

  或者,修改java的memcacheClient源代码,不建议。

1 楼 a254939392 2011-10-11  
盛大的点点滴滴点点滴滴点点滴滴滴滴
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template