2010-09-18 52 views
3

每次我嘗試使用add()函數memcached的,我得到以下錯誤:PHP memcached的錯誤

A PHP Error was encountered 

Severity: Warning 

Message: MemcachePool::add(): The lowest two bytes of the flags array is reserved for pecl/memcache internal use 

Filename: libraries/memcached_library.php 

Line Number: 92 

出了什麼問題?我正在使用這個庫codeigniter:http://github.com/trs21219/memcached-library

回答

13

你在64位?看起來這是最近發現的pecl/memcache錯誤:http://pecl.php.net/bugs/bug.php?id=18567

看起來好像它與壓縮標誌有關。它不可能是一個布爾值了,它需要根據this source code

/** 
* The compressed argument on Memcache::add, Memcache::set and Memcache::replace takes 
* an integer not a boolean. Since pecl/memcache 3.0.3 booleans now leads to warnings like 
* The lowest two bytes of the flags array is reserved for pecl/memcache internal use 
*/ 
+2

完美。謝謝。我將壓縮從TRUE更改爲0,現在一切正常。 – Matthew 2010-09-18 12:20:25

+0

我在Windows上使用Memcache並面臨同樣的問題。只需重複一遍,如果傳遞需要0來解決它,'Compression'將是第三個參數。 Ref:http://php.net/manual/en/memcache.set.php – kta 2016-11-20 11:52:46

5

您可以添加「假」作爲第三個參數,它的工作對我來說是一個整數。

Warning (2): MemcachePool::add() [memcachepool.add]: The lowest two bytes of the flags array is reserved for pecl/memcache internal use 

From: 
return $this->memcache->add($name, $value, $expiry); 

To: 
return $this->memcache->add($name, $value, false, $expiry); 
+0

是的,PHP中的Memcache和Memcached方法有所不同 – 2014-09-10 10:34:37

5

可能是你的情況:一些手冊內存緩存使用,像http://www.codeforest.net/how-to-install-memcached-on-windows-machine,有錯誤

$memcache->add("key", $tmp, 30); 

正確使用截止秒參數(30秒這裏)是:

$memcache->add("key", $tmp, MEMCACHE_COMPRESSED, 30); 

或類似

$memcache->add("key", $tmp, false, 30); 

與正確的示例性的手動樣本:http://zurmo.org/wiki/installing-memcache-on-windows
也文檔http://php.net/manual/ru/memcache.add.php

見對我來說這是關鍵。

1

這可能對一些人有所幫助,我已經下載了一個codeigniter庫,它使用了memcache而不是會話的memcache。它可以在這裏找到:https://github.com/pierskarsenbarg/codeigniter-session-memcached

對我來說,問題是,LIB使用

memcache->set() 

和/或

memcache->replace() 

當第三個參數是到期時間,而不是一個有效的標誌類型。

即MEMCACHE_COMPRESSED

原始編碼:

$this->memcache->set('user_session_data' . $this->userdata['session_id'], $this->userdata, $this->sess_expiration); 

改變的代碼:

$this->memcache->set('user_session_data' . $this->userdata['session_id'], $this->userdata, MEMCACHE_COMPRESSED, $this->sess_expiration); 

改變第三參數爲正確的標誌之後鍵入錯誤去遠。

+1

你的回答其實跟我一樣,但是關於codeigniter memcached功能的bug。我認爲它也有用 - upvote。 – FlameStorm 2016-04-21 21:51:18