set( self::_file_path(), $data . self::_cache_signatur(), $lifetime ); } /** * Lesen aus dem Cache * * @since 2.0.7 * @change 2.0.7 * * @param string $hash Hash des Eintrags * @return mixed $diff Wert des Eintrags */ public static function get_item($hash) { /* Server connect */ if ( ! self::_connect_server() ) { return; } /* Get item */ return self::$_memcached->get( self::_file_path() ); } /** * Entfernung aus dem Cache * * @since 2.0.7 * @change 2.0.7 * * @param string $hash Hash des Eintrags * @param string $url URL des Eintrags [optional] */ public static function delete_item($hash, $url = '') { /* Server connect */ if ( ! self::_connect_server() ) { return; } /* Delete */ self::$_memcached->delete( self::_file_path($url) ); } /** * Leerung des Cache * * @since 2.0.7 * @change 2.0.7 */ public static function clear_cache() { /* Server connect */ if ( ! self::_connect_server() ) { return; } /* Flush */ @self::$_memcached->flush(); } /** * Ausgabe des Cache * * @since 2.0.7 * @change 2.0.7 */ public static function print_cache() { return; } /** * Ermittlung der Cache-Größe * * @since 2.0.7 * @change 2.0.7 * * @return mixed $diff Cache-Größe */ public static function get_stats() { /* Server connect */ if ( ! self::_connect_server() ) { wp_die('MEMCACHE: Not enabled.'); } /* Infos */ $data = self::$_memcached->getStats(); /* No stats? */ if ( empty($data) ) { return NULL; } /* Get first key */ $data = $data[key($data)]; /* Leer */ if ( empty($data['bytes']) ) { return NULL; } return $data['bytes']; } /** * Generierung der Signatur * * @since 2.0.7 * @change 2.0.7 * * @return string $diff Signatur als String */ private static function _cache_signatur() { return sprintf( "\n\n", 'Cachify | http://cachify.de', 'Memcached', date_i18n( 'd.m.Y H:i:s', current_time('timestamp') ) ); } /** * Pfad der Cache-Datei * * @since 2.0.7 * @change 2.0.7 * * @param string $path Request-URI oder Permalink [optional] * @return string $diff Pfad zur Cache-Datei */ private static function _file_path($path = NULL) { return trailingslashit( sprintf( '%s%s', $_SERVER['HTTP_HOST'], parse_url( ( $path ? $path : $_SERVER['REQUEST_URI'] ), PHP_URL_PATH ) ) ); } /** * Connect to Memcached server * * @since 2.0.7 * @change 2.1.8 * * @hook array cachify_memcached_servers Array with memcached servers * * @return boolean true/false TRUE bei Erfolg */ private static function _connect_server() { /* Not enabled? */ if ( ! self::is_available() ) { return false; } /* Already connected */ if ( is_object(self::$_memcached) ) { return true; } /* Init */ self::$_memcached = new Memcached(); /* Set options */ if ( defined('HHVM_VERSION') ) { self::$_memcached->setOption( Memcached::OPT_COMPRESSION, false ); self::$_memcached->setOption( Memcached::OPT_BUFFER_WRITES, true ); self::$_memcached->setOption( Memcached::OPT_BINARY_PROTOCOL, true ); } else { self::$_memcached->setOptions( array( Memcached::OPT_COMPRESSION => false, Memcached::OPT_BUFFER_WRITES => true, Memcached::OPT_BINARY_PROTOCOL => true ) ); } /* Connect */ self::$_memcached->addServers( (array)apply_filters( 'cachify_memcached_servers', array( array( '127.0.0.1', 11211 ) ) ) ); return true; } }