2012-03-20 16 views
17

का उपयोग करने के लिए memcache एक्सटेंशन लोड किया जाना चाहिए, मुझे memcached इंस्टॉल किया गया है। यह phpinfo() से है:इस बैकएंड

enter image description here

लेकिन जब इसे इस तरह का उपयोग कर:

The memcache extension must be loaded for using this backend 

कोई भी विचार:

private static function getZendCacheMemcachedObject() 
{ 
    $frontendOpts = array(
     'caching' => true, 
     'lifetime' => 3600, 
     'automatic_serialization' => true 
    ); 

    $backendOpts = array(
     'servers' =>array(
      array(
      'host' => 'localhost', 
      'port' => 11211, 
      'weight' => 1 
      ) 
     ), 
     'compression' => false 
    ); 

    return Zend_Cache::factory('Core', 'Memcached', $frontendOpts, $backendOpts); 
} 

public function foo($id) 
{ 
    $cache = self::getZendCacheMemcachedObject(); 
    $cacheKey = 'foo_'.$id; 
    $xml = $cache->load($cacheKey); 

    if (false === $xml) { 
     $xml = $this->httpClient->foo(); 
     $cache->save($xml, $cacheKey); 
    } 

    return $xml; 
} 

मैं इस त्रुटि मिलती है?

आपका कोड पहले एक की जरूरत है:

+0

FYI करें जेडएफ कि त्रुटि आउटपुट यदि 'extension_loaded ('मेम्कैश')' झूठी देता है, तो कुछ अजीब है आपकी विन्यास के साथ चल रहा है। –

+0

ठीक है, समस्या यह प्रतीत होती है कि Zend_Cache_Backend_Memcached memcached के बजाय memcache लाइब्रेरी लोड कर रहा है। जब यह memcache का उपयोग करता है तो इसे मेकैच क्यों कहा जाता है? WTF। –

+1

यह मदद कर सकता है: http://serverfault.com/questions/63383/memcache-vs-memcached - मेरे phpinfo को देखकर, यह निश्चित रूप से 'memcache' है जिसे मैंने इंस्टॉल किया है, जबकि आपका 'memcached' सूचीबद्ध है –

उत्तर

35

पीएचपी भ्रामक नामों वाली दो Memcached पुस्तकालयों है। बस एक सरल pecl uninstall memcached और फिर pecl install memcache करें, अपने php.ini को एप्राइपियेट को शामिल करने के लिए संशोधित करें। इसलिए और इसे काम करना चाहिए।

+1

उन नामों ने मुझे भ्रमित किया पुरे समय। मैं कभी नहीं जानता कि मैं मेमकेचे या मेमकैच या लिबमेकैच से निपट रहा हूं: पी –

+0

https://xkcd.com/1742/ यदि आप पूर्ण निर्देश देते हैं तो बहुत अच्छा होगा। हम php.ini में क्या जोड़ते हैं? – Isaac

2
पीएचपी पुस्तकालय है कि आप स्थापित किया है के लिए

, यह सबसे आसान समाधान की तरह दिखता है एक अलग बैकएंड उपयोग करने के लिए हो सकता है - अपने Zend फ्रेमवर्क संस्करण यह अनुमति देता है:

Zend_Cache_Backend_Libmemcached (http://doczf.mikaelkael.fr/1.11/en/zend.cache.backends.html)

मैं मान लेते हैं कि वापसी Zend_Cache :: फैक्टरी ('कोर', 'Memcached', $ frontendOpts, $ backendOpts); में बदल जाता है Zend_Cache :: फैक्ट्री ('कोर', 'लिंबमेकैच', $ फ्रंटेंड ऑप्सेस, $ बैकएंड ऑप्शन);

1

मैं इस मुद्दे को हल करता हूं काफी सरल है। यह समस्या तब होती है क्योंकि आपने php memcached एक्सटेंशन इंस्टॉल नहीं किया है। आइए उबंटू

sudo apt-get install php-memcached 

में इस आदेश से इसे स्थापित या अन्य ओएस में आप अपने आप को पता लगा सकते हैं

+0

ई: पैकेज का पता लगाने में असमर्थ php-memcached – Chap

+0

apt-get अद्यतन करने का प्रयास करें और फिर – Phuc

+3

** फिर से निष्पादित करें php5-memcached ** –

संबंधित मुद्दे