digitalFAQ.com Forum

digitalFAQ.com Forum (https://www.digitalfaq.com/forum/)
-   Website and Server Troubleshooting (https://www.digitalfaq.com/forum/web-tech/)
-   -   Wincache settings for WordPress [notes] (https://www.digitalfaq.com/forum/web-tech/2942-wincache-settings-wordpress.html)

admin 03-10-2011 05:42 PM

Wincache settings for WordPress [notes]
 
[NOTES]

Specify Wincache object cache in WordPress code.

From http://blogs.iis.net/ruslany/archive...cache-1-1.aspx
and mirrored at http://ruslany.net/2010/03/make-word...-wincache-1-1/

"To configure WordPress to use WinCache user cache API’s copy the following code and put it in the file named object-cache.php located at the /wp-content/ directory of your WordPress site.

Code:

<?php

/*
Name: WinCache Cache
Description: WinCache backend for the WP Object Cache.
Version: 0.1
URI: http://ruslany.net/
Author: Ruslan Yakushev

Install this file to wp-content/object-cache.php

Big thanks to Mark Jaquith (http://markjaquith.wordpress.com/)
whose apc-object-cache.php was used as a basis for this code.
*/

// gracefully revert to default cache if WinCache is not installed
if ( !extension_loaded('wincache') ||
      !function_exists('wincache_ucache_get') ||
      strcmp(ini_get('wincache.ucenabled'), "1") )  {
 include_once(ABSPATH . WPINC . '/cache.php');
} else {

function wp_cache_add($key, $data, $flag = '', $expire = 0) {
  global $wp_object_cache;
  return $wp_object_cache->add($key, $data, $flag, $expire);
}

function wp_cache_close() {
  return true;
}

function wp_cache_delete($id, $flag = '') {
  global $wp_object_cache;
  return $wp_object_cache->delete($id, $flag);
}

function wp_cache_flush() {
  global $wp_object_cache;

  return $wp_object_cache->flush();
}

function wp_cache_get($id, $flag = '') {
  global $wp_object_cache;
  return $wp_object_cache->get($id, $flag);
}

function wp_cache_init() {
  global $wp_object_cache;
  $wp_object_cache = new WP_Object_Cache();
}

function wp_cache_replace($key, $data, $flag = '', $expire = 0) {
  global $wp_object_cache;
  return $wp_object_cache->replace($key, $data, $flag, $expire);
}

function wp_cache_set($key, $data, $flag = '', $expire = 0) {
  global $wp_object_cache;
  return $wp_object_cache->set($key, $data, $flag, $expire);
}

class WP_Object_Cache {
  var $global_groups = array ('users', 'userlogins', 'usermeta');
  var $cache = array ();

  function add($id, $data, $group = 'default', $expire = 0) {
    return $this->set($id, $data, $group, $expire);
  }

  function delete($id, $group = 'default') {
    $key = $this->key($id, $group);
    $result = wincache_ucache_delete($key);
    if ( false !== $result )
      unset($this->cache[$key]);
    return $result;
  }

  function flush() {
    wincache_ucache_clear();
    return true;
  }

  function get($id, $group = 'default') {
    $key = $this->key($id, $group);
    if ( isset($this->cache[$key]) )
      $value = $this->cache[$key];
    else
      $value = wincache_ucache_get($key);
    /* echo "Cache key: $key<br/>";
    echo 'Cache value:<br/>';
    var_dump($value);
    echo '<br/>'; */
    if ( NULL === $value )
      $value = false;
    $this->cache[$key] = $value;
    return $value;
  }

  function key($key, $group) {
    global $blog_id;
    if ( empty($group) )
      $group = 'default';
    if (false !== array_search($group, $this->global_groups))
      $prefix = '';
    else
      $prefix = $blog_id . ':';
    return md5(ABSPATH . "$prefix$group:$key");
  }

  function replace($id, $data, $group = 'default', $expire = 0) {
    return $this->set($id, $data, $group, $expire);
  }

  function set($id, $data, $group = 'default', $expire = 0) {
    $key = $this->key($id, $group);
    $result = wincache_ucache_set($key, $data, $expire);
    if ( false !== $result )
      $this->cache[$key] = $data;
    return $result;
  }

  function stats() {
    $wincache_info = wincache_ucache_info();
    echo "<p>\n";
    echo "<strong>Cache Hits:</strong> {$wincache_info['total_hit_count']}<br/>\n";
    echo "<strong>Cache Misses:</strong> {$wincache_info['total_miss_count']}<br/>\n";
    echo "</p>\n";
    if ( ! empty($this->cache) ) {
      echo "<pre>\n";
      print_r($this->cache);
      echo "</pre>\n";
    }
  }

  function WP_Object_Cache() {
  // Nothing here
  }
 }
}
?>

Excellent. :thumb:


All times are GMT -5. The time now is 09:27 AM

Site design, images and content © 2002-2024 The Digital FAQ, www.digitalFAQ.com
Forum Software by vBulletin · Copyright © 2024 Jelsoft Enterprises Ltd.