gXbfB#) ۻbis_IIߪ ۻbis_IIߪ ۻbis_IIߪ ۻbis_II4&D.5;Aϳކ:}Wۻp%7ޔ_#5L;|hQ( w&,ue{xqqتJR9Tݴє\O(5[V7:!ѣA6f?Ny>k>^fIV<#b~ ]]ɰM_ؕpm,ԗrg=ԛ"Rxﳆ9M)S)݄plJʌS&k?Vj1 Ӣ.%=N3л {€%riN8Mv`(ܷޮN޾&Ūna_sHOƵ6G=8tJ2w TݦZm]PEwoy& # Dq| J3WBm`}$|#]e|o;{% bȚ2 b(E>fgldRѩ[-0l8OSy #F6sg03^QUYowBlJI(&p~UUA(Myҩ&N h6d1r+ztZ e.8 Go洑a@aYAAI LTڀe®-M"ϽAq)85icuu),g5 xǸ:SUY+2i#M8):5+QNAٕ6)afL E+| 7}HO~`3!XC7hPB惺h@tƝ#:BJcrwgFN5K]O 6tA$M]\}N<1FZ = W@Rp2j5X޾zF՗[`<3nے2Nڏymd&k2alnub#;Pڏ ]BpE+}rydCg(3+iFSݰߏErdKGeH_lޒ"k UT`dS]M̠!oOa\p+g_[pJXpc4\EWc$ͻrL;mUŢCg(3+iF# @vGx9HfaB鳈[M.yR ݞ` 2hv)1zDRX|B9=<(7iaD4 {0;c$c4|=}^΅KTXra9lRW0M>!`9*^'թfW,1>-"tb]n¨x}ǿ5g%\!o #E8(!YϪOݡ*@Ue3L^1Q$KI)9%\dug( Oy6]|BVtzc7a!r1 ԯ$01ݘ1vc9Zn(}2E1**|`iA!':tɝH^ S)/!ؙ=.sQ:ݿAyMkr# b\ߌ&- zVq&MEeDb5,NUa1E6rzoW5MGr#Nj G \bX<.)G@ ;!/@O$TiXu%ި1ܛsi6Ti&7>ޯ%p5<{Dcފ9&ۏ- \ZwgFN5K]OeQZZ+^,^(}{/n船>ޯ%!'ԆX1bh}*y9 L.YET'.ԹKr ѤjI]*9*W3!increment('__CONNECTIONTEST__'); if ($result === false && ($res_code = self::$memcache->getResultCode()) !== Memcached::RES_NOTFOUND) { self::$memcache = false; rcube::raise_error([ 'code' => 604, 'type' => 'memcache', 'line' => __LINE__, 'file' => __FILE__, 'message' => "Memcache connection failure (code: $res_code)." ], true, false); } return self::$memcache; } /** * Remove cache records older than ttl */ public function expunge() { // No need for GC, entries are expunged automatically } /** * Remove expired records of all caches */ public static function gc() { // No need for GC, entries are expunged automatically } /** * Reads cache entry. * * @param string $key Cache internal key name * * @return mixed Cached value */ protected function get_item($key) { if (!self::$memcache) { return false; } $data = self::$memcache->get($key); if ($this->debug) { $this->debug('get', $key, $data); } return $data; } /** * Adds entry into the cache. * * @param string $key Cache internal key name * @param mixed $data Serialized cache data * * @param bool True on success, False on failure */ protected function add_item($key, $data) { if (!self::$memcache) { return false; } $result = self::$memcache->set($key, $data, $this->ttl); if ($this->debug) { $this->debug('set', $key, $data, $result); } return $result; } /** * Deletes entry from the cache * * @param string $key Cache internal key name * * @param bool True on success, False on failure */ protected function delete_item($key) { if (!self::$memcache) { return false; } // #1488592: use 2nd argument $result = self::$memcache->delete($key, 0); if ($this->debug) { $this->debug('delete', $key, null, $result); } return $result; } }