Last modified: 2011-04-14 15:10:38 UTC
Presumably, PHP's memcached module (which caused the memcached class to be renamed to MWMemcached because of a naming conflict) is faster than our PHP implementation and supports the same actions. We should write a wrapper class around the built-in memcached class that coexists with MWMemcached and have wfGetCache() choose which one to instantiate based on class_exists('memcached') . In the longer term, we should rewrite this horrible infrastructure and have all cache interface classes inherit one abstract class, and move wfGetCache()'s functionality to a static method in that abstract class. We could also have each cache interface class implement isAvailable() so we can move the class_exists('memcached') check to a more logical place.
Yes, fine, but it's unlikely the PECL client supports the same hash function (an MD5 hash truncated to 31 bits then modulo the server count), so deployment may be tricky.
(In reply to comment #1) > Yes, fine, but it's unlikely the PECL client supports the same hash function > (an MD5 hash truncated to 31 bits then modulo the server count), so deployment > may be tricky. I'm not saying we should deploy it on Wikimedia (although, if it really is faster, we may want to), just that we should offer this functionality to third-party users. If migrating an existing server farm from one to the other causes issues, perhaps we should have separate cache types for the two so you can configure MW to use the PHP-based client even if the module-based one is available.