关于编译memcached时加--enable-memcached-igbinary报错,去掉这个参数即可make通过。
报错如下:
/home/ysq/download/memcached-1.0.2/php_memcached.c -fPIC -DPIC -o .libs/php_memcached.o
/home/ysq/download/memcached-1.0.2/php_memcached.c:168: 警告:空声明中指定存储类无用
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘php_memc_get_impl’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:382: 警告:传递参数 4 (属于 ‘memcached_mget_by_key’)时在不兼容的指针类型间转换
/home/ysq/download/memcached-1.0.2/php_memcached.c:419: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c:451: 警告:传递参数 4 (属于 ‘memcached_mget_by_key’)时在不兼容的指针类型间转换
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘php_memc_getMulti_impl’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:588: 警告:传递参数 4 (属于 ‘memcached_mget_by_key’)时在不兼容的指针类型间转换
/home/ysq/download/memcached-1.0.2/php_memcached.c:618: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c:621: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘php_memc_getDelayed_impl’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:737: 警告:传递参数 4 (属于 ‘memcached_mget_by_key’)时在不兼容的指针类型间转换
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘zim_Memcached_fetch’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:812: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c:815: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘zim_Memcached_fetchAll’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:863: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c:866: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘zim_Memcached_getServerList’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:1500: 警告:从不兼容的指针类型赋值
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘zim_Memcached_getServerByKey’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:1530: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘zim_Memcached_getStats’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:1569: 警告:从不兼容的指针类型赋值
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘zim_Memcached_getVersion’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:1604: 警告:从不兼容的指针类型赋值
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘zim_Memcached_getResultMessage’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:1826: 警告:初始化丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘php_memc_do_serverlist_callback’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:1892: 警告:传递实参 4(属于 ‘add_assoc_string_ex’)丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘php_memc_zval_to_payload’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:2033: 错误:提供给函数 ‘php_json_encode’ 的实参太多
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘php_memc_zval_from_payload’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:2198: 错误:提供给函数 ‘php_json_decode’ 的实参太多
/home/ysq/download/memcached-1.0.2/php_memcached.c: 在函数 ‘php_memc_do_result_callback’ 中:
/home/ysq/download/memcached-1.0.2/php_memcached.c:2359: 警告:赋值丢弃了指针目标类型的限定
/home/ysq/download/memcached-1.0.2/php_memcached.c:2362: 警告:赋值丢弃了指针目标类型的限定
make: *** [php_memcached.lo] 错误 1
参考:http://www.ggtai.com/content/php-libmemcached-memcached-igbinary,尝试加以下参数:
./configure CFLAGS="-O2 -g" --enable-memcached-igbinary --enable-memcached
依然报错。查看google到:http://pecl.php.net/bugs/bug.php?id=16770,原来的bug。
于是到http://github.com/andreiz/php-memcached或者最近的版本,可以顺利通过
再看phpinfo(); 中的memcached显示:igbinary support => yes
在memcached使用上,可以用选项:$this->_memcache->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY); 启用第三方igbinary来做序列化了。
另外在测试时发现,如果setMulty的key为16个字符时,会不正常,返回值过一会自动变成0;诡异的问题