2012-12-04 4 views
1

PECL-Memcache 클라이언트에서 PECL-Memcached으로 응용 프로그램을 전환하는 중이며 걸림 거리가 있습니다.PECL-Memcache가 PECL-Memcached에서 설정 한 INT를 읽을 수 없습니다.

PECL-Memcached에서 INT 값을 설정하면 PECL-Memcache에서 읽을 수없는 것으로 보입니다. 나는 다음과 같은 것을 본다 :

MemcachePool::get(): Failed to unserialize data 

int 값을 문자열로 변환하면 get operation은 memcache와 함께 작동한다. 물론 이것은 증가/감소를 나눕니다.

memcached에서 INT를 설정하고 memcached에서 읽는 것이 좋습니다.

내가 사용하고 있습니다 :

  • 는 libmemcached 1.0.14
  • PECL-memcache에 3.0.6
  • memcached를 1.4.4
  • PHP-PECL-memcached를 2.1.0

다른 라이브러리가 설정하고있는 플래그와 관련이 있다고 생각합니다. 이것들을 서로 호환 가능하게 만드는 것에 대한 제안?

감사합니다.

답변

3

memcached 서버에 플래그가 지정되면 pecl-memcache와 php-pecl-memcacheD 사이에 값 유형이 호환되지 않습니다.

#define MMC_TYPE_STRING 0x0000 
#define MMC_TYPE_BOOL 0x0100 
#define MMC_TYPE_LONG 0x0300 
#define MMC_TYPE_DOUBLE 0x0700 

는 PECL-memcached를이 (php_memcached.c)를 사용 : STRING에 대한

#define MEMC_VAL_IS_STRING  0 
#define MEMC_VAL_IS_LONG  1 
#define MEMC_VAL_IS_DOUBLE  2 
#define MEMC_VAL_IS_BOOL  3 
#define MEMC_VAL_IS_SERIALIZED 4 
#define MEMC_VAL_IS_IGBINARY 5 
#define MEMC_VAL_IS_JSON  6 

그래서 유일한 유형은 실제와 일치

PECL-memcache에 (memcache_pool.h는) 다음과 같은 플래그를 사용 두 가지 방식으로 같은 방식으로 디코딩 될 수 있습니다.