Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F847884
D351.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Apr 19, 7:23 PM
Size
3 KB
Mime Type
text/x-diff
Expires
Sun, Apr 20, 7:23 PM (39 m, 9 s)
Engine
blob
Format
Raw Data
Handle
602668
Attached To
D351: INP-1750 - Support PHP Memcached extension for caching
D351.diff
View Options
Index: branches/5.2.x/core/install/install_toolkit.php
===================================================================
--- branches/5.2.x/core/install/install_toolkit.php
+++ branches/5.2.x/core/install/install_toolkit.php
@@ -970,7 +970,11 @@
$cache_handler = $this->Application->makeClass('kCache');
$cache_handlers = Array (
- 'Fake' => 'None', 'Memcache' => 'Memcached', 'XCache' => 'XCache', 'Apc' => 'Alternative PHP Cache'
+ 'Fake' => 'None',
+ 'Memcached' => 'Memcached (via "Memcached" extension)',
+ 'Memcache' => 'Memcached (via "Memcache" extension)',
+ 'XCache' => 'XCache',
+ 'Apc' => 'Alternative PHP Cache',
);
foreach ($cache_handlers AS $class_prefix => $title) {
Index: branches/5.2.x/core/kernel/utility/cache.php
===================================================================
--- branches/5.2.x/core/kernel/utility/cache.php
+++ branches/5.2.x/core/kernel/utility/cache.php
@@ -823,6 +823,116 @@
}
}
+ class MemcachedCacheHandler extends kCacheHandler {
+
+ /**
+ * Memcache connection
+ *
+ * @var Memcached
+ * @access protected
+ */
+ protected $_handler = null;
+
+ /**
+ * MemcachedCacheHandler constructor.
+ *
+ * @param kCache $parent Parent.
+ * @param string $default_servers Default servers.
+ */
+ public function __construct(kCache $parent, $default_servers = '')
+ {
+ parent::__construct($parent);
+
+ $this->cachingType = CACHING_TYPE_MEMORY;
+
+ $memcached_servers = kUtil::getSystemConfig()->get('MemcacheServers', $default_servers);
+
+ if ( $memcached_servers && class_exists('Memcached') ) {
+ $this->_enabled = true;
+ $this->_handler = new Memcached();
+ $servers = explode(';', $memcached_servers);
+
+ foreach ( $servers as $server ) {
+ if ( preg_match('/(.*):([\d]+)$/', $server, $regs) ) {
+ // Possible format: "hostname:port" OR "unix:///path/to/socket:0".
+ $server = $regs[1];
+ $port = $regs[2];
+ }
+ else {
+ $port = 11211;
+ }
+
+ $this->_handler->addServer($server, $port);
+ }
+
+ // Verify, that memcache server is working.
+ if ( !$this->_handler->set('test', 1) ) {
+ $this->_enabled = false;
+ }
+ }
+ }
+
+ /**
+ * Retrieves value from cache
+ *
+ * @param string|array $name Name.
+ *
+ * @return mixed
+ * @access public
+ */
+ public function get($name)
+ {
+ if ( is_array($name) ) {
+ return $this->_handler->getMulti($name);
+ }
+
+ return $this->_handler->get($name);
+ }
+
+ /**
+ * Stores value in cache
+ *
+ * @param string $name Name.
+ * @param mixed $value Value.
+ * @param integer $expiration Expiration.
+ *
+ * @return boolean
+ * @access public
+ */
+ public function set($name, $value, $expiration = 0)
+ {
+ return $this->_handler->set($name, $value, $expiration);
+ }
+
+ /**
+ * Stores value in cache (only if it's not there already)
+ *
+ * @param string $name Name.
+ * @param mixed $value Value.
+ * @param integer $expiration Expiration.
+ *
+ * @return boolean
+ * @access public
+ */
+ public function add($name, $value, $expiration = 0)
+ {
+ return $this->_handler->add($name, $value, $expiration);
+ }
+
+ /**
+ * Deletes key from cache
+ *
+ * @param string $name Name.
+ *
+ * @return boolean
+ * @access public
+ */
+ public function delete($name)
+ {
+ return $this->_handler->delete($name);
+ }
+
+ }
class ApcCacheHandler extends kCacheHandler {
@@ -974,4 +1084,4 @@
{
return xcache_unset($name);
}
- }
\ No newline at end of file
+ }
Event Timeline
Log In to Comment