關於編譯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;詭異的問題