Go Back   vb.org Archive > vBulletin Modifications > vBulletin 4.x Modifications > vBulletin 4.x Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Datastore cache to WinCache - boost your vBulletin Details »»
Datastore cache to WinCache - boost your vBulletin
Version: 1.01, by hydn hydn is offline
Developer Last Online: Sep 2013 Show Printable Version Email this Page

Category: Board Optimization - Version: 4.0.2 Rating:
Released: 03-29-2010 Last Update: Never Installs: 14
Code Changes  
No support by the author.

This allows you to use WinCache as a datastore cache in vBulletin. This also assumes that you have already installed Wincache version 1.1 or later. This is definitely your choice if you have already installed and enabled WinCache on your windows server. Use at your own risk!

(See screenshot of stats below after 30mins up-time)

Prerequisites
  • a working php installation
  • a working vBulletin 4.0.2 installation
  • a working WinCache 1.1 or Better.
Install the modification
  1. Add the following code to the end of class_datastore.php just above "?>"
Code:
// #############################################################################
// WINCACHE
 
/**
* Class for fetching and initializing the vBulletin datastore from WINCACHE
*/

class vB_Datastore_WINCACHE extends vB_Datastore
{
                /**
                * Indicates if the result of a call to the register function should store the value in memory
                *
                * @var  boolean
                */
                var $store_result = false;
 
                /**
                * Fetches the contents of the datastore from WINCACHE
                *
                * @param           array      Array of items to fetch from the datastore
                *
                * @return           void
                */
                function fetch($items)
                {
                                if (!function_exists('wincache_ucache_get'))
                                {
                                                trigger_error('WINCACHE not installed', E_USER_ERROR);
                                }
 
                                if (!sizeof($items = $this->prepare_itemarray($items)))
                                {
                                                return;
                                }
 
                                $unfetched_items = array();
                                foreach ($items AS $item)
                                {
                                                $this->do_fetch($item, $unfetched_items);
                                }
 
                                $this->store_result = true;
 
                                // some of the items we are looking for were not found, lets get them in one go
                                if (!empty($unfetched_items))
                                {
                                                if (!($result = $this->do_db_fetch($this->prepare_itemlist($unfetched_items))))
                                                {
                                                                return false;
                                                }
                                }
 
                                $this->check_options();
                                return true;
                }
 
                /**
                * Fetches the data from shared memory and detects errors
                *
                * @param           string     title of the datastore item
                * @param           array      A reference to an array of items that failed and need to fetched from the database
                *
                * @return           boolean
                */
                function do_fetch($title, &$unfetched_items)
                {
                                $ptitle = $this->prefix . $title;
 
                                if (($data = wincache_ucache_get($ptitle)) === false)
                                { // appears its not there, lets grab the data, lock the shared memory and put it in
                                                $unfetched_items[] = $title;
                                                return false;
                                }
                                $this->register($title, $data);
                                return true;
                }
 
                /**
                * Sorts the data returned from the cache and places it into appropriate places
                *
                * @param           string     The name of the data item to be processed
                * @param           mixed   The data associated with the title
                *
                * @return           void
                */
                function register($title, $data, $unserialize_detect = 2)
                {
                                if ($this->store_result === true)
                                {
                                                $this->build($title, $data);
                                }
                                parent::register($title, $data, $unserialize_detect);
                }
 
                /**
                * Updates the appropriate cache file
                *
                * @param           string     title of the datastore item
                * @param           mixed   The data associated with the title
                *
                * @return           void
                */
                function build($title, $data)
                {
                                $ptitle = $this->prefix . $title;
 
                                wincache_ucache_delete($ptitle);
                                wincache_ucache_set($ptitle, $data);
                }
 
}
2. Set your config.php to use wincache for datastore:

Code:
$config['Datastore']['class'] = 'vB_Datastore_WINCACHE';
Done!

Check the "User and Session Cache" section of your wincache.php (screenshot) in your browser to see stats!

Special thanks to the guys at Microsoft for their help! Official IIS support at http://forums.iis.net

Enjoy!

Screenshots

File Type: jpg wincache_datastore_stats.jpg (199.8 KB, 0 views)

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 03-30-2010, 06:04 AM
hydn hydn is offline
 
Join Date: Oct 2005
Posts: 180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

reserved
Reply With Quote
  #3  
Old 04-05-2010, 07:33 PM
ps2wiz ps2wiz is offline
 
Join Date: Apr 2005
Posts: 217
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for this, just switched over from memcahced. Now only if there was something we can do with vBSEO and wincache
Reply With Quote
  #4  
Old 04-06-2010, 10:32 PM
hydn hydn is offline
 
Join Date: Oct 2005
Posts: 180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm trying to work on that. I have it working but can't find a way to add it to the list in the cp lol
Reply With Quote
  #5  
Old 05-24-2010, 02:59 AM
ChopSuey ChopSuey is offline
 
Join Date: Jun 2009
Location: Alaska
Posts: 2,140
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

We need WinCache installed?
Reply With Quote
  #6  
Old 06-12-2010, 11:37 PM
Leica.Robbiani Leica.Robbiani is offline
 
Join Date: Sep 2007
Location: South Germany
Posts: 149
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi there,

does anyone think it's a basic necessity to use a windows server ???

Well, I think, if you never heard about FreeBSD, just try linux for some more security on your server ...

Best regards

L.R.
Reply With Quote
  #7  
Old 08-04-2010, 03:49 PM
BoyStav BoyStav is offline
 
Join Date: Mar 2009
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Leica.Robbiani View Post
Hi there,

does anyone think it's a basic necessity to use a windows server ???

Well, I think, if you never heard about FreeBSD, just try linux for some more security on your server ...

Best regards

L.R.
I'm using Windows on all my servers.
I was tried to use a linux on my servers, it's very hard to configure, it's crosslinked with tons of other open source.
Reply With Quote
  #8  
Old 10-26-2010, 12:50 PM
Brandon Sheley's Avatar
Brandon Sheley Brandon Sheley is offline
 
Join Date: Mar 2005
Location: Google Kansas
Posts: 4,678
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is there an easy way to test and see if we have WinCache installed?
I know I can ask my host, but didn't know if I could find out myself.
Reply With Quote
  #9  
Old 11-20-2011, 07:53 PM
vrinteractive vrinteractive is offline
 
Join Date: Nov 2005
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

it will show up in your phpinfo.

thanks for supporting this- seems xcache for windows quit development after 5.3.6
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:10 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04703 seconds
  • Memory Usage 2,304KB
  • Queries Executed 23 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (2)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (8)postbit
  • (1)postbit_attachment
  • (9)postbit_onlinestatus
  • (9)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete