Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Memcached (not memcache) PHP extension on Windows

I can't seem to find the MemcacheD extension for PHP.

There are a few compilations of php_memcache.dll, but that's not the same.

The main thing I'm missing is getMulti(), which doesn't exist in Memcache.

So far I found this, but there's no DLL:

http://pecl.php.net/package/memcached

like image 629
Oleg Kikin Avatar asked Jan 09 '13 18:01

Oleg Kikin


People also ask

How do I enable Memcached php?

To enable the PHP Memcache extensions, you need to build PHP utilizing –enable-Memcache option when building, and configure it from the source. On Debian-based dispersions, you can use the php-Memcache package. To set global runtime configuration choices, specify the configuration option values within your php.

How do I know if php Memcached is installed?

You can look at phpinfo() or check if any of the functions of memcache is available. Ultimately, check whether the Memcache class exists or not. e.g. if(class_exists('Memcache')){ // Memcache is enabled. }


2 Answers

Officially - it does not exist. There are several people who have created their own DLL's though. Here is one person's blog who has created the dll:

http://trondn.blogspot.com/2010/07/libmemcached-on-win32.html

Here is a link to the repository with the source so you can build your own DLL for memcached:

http://bazaar.launchpad.net/~trond-norbye/libmemcached/mingw32/files

like image 193
Jack Avatar answered Oct 12 '22 01:10

Jack


I know the memcached has some other features but its interface is nearly identical with that of memcache extension. You can very easily get away with such code and in my case it works perfectly well. If you don't have the memcached loaded create this file:


<?php

    class Memcached {
       const OPT_LIBKETAMA_COMPATIBLE = true;
       const OPT_COMPRESSION = true;
       const OPT_NO_BLOCK = true;
       //if you code relies on any other constants define them to avoid
       //undefined constant notice

       //http://www.php.net/manual/en/memcached.constants.php

       public $_instance;
       public function __construct() {
            $this->_instance = new Memcache;
       }

       public function __call($name, $args) {
            return call_user_func_array(array($this->_instance, $name), $args);
       }

       public function setOption() {}
    }


Either include it or configure autoloader to pick it up. Of course you'll need a properly configured memcache instance and addServer calls but such calls should already be in the code if the codebase assumes Memcached. I hope it helps someone/

like image 42
user725408 Avatar answered Oct 12 '22 02:10

user725408