Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Beta Releases

Reply
 
Thread Tools
Cache the datastore in the filesystem Details »»
Cache the datastore in the filesystem
Version: 1.0, by Stadler Stadler is offline
Developer Last Online: Jul 2018 Show Printable Version Email this Page

Version: 3.0.3 Rating:
Released: 01-23-2005 Last Update: 03-20-2005 Installs: 10
Code Changes Additional Files  
No support by the author.

Ok, the purpose of this hack is to move the huge parts of the datastore,that are called each time you access a page, into a file unserialized and passed through var_export in order to save the time used to load the data from the database and to unserialize it. If you're using a PHP optimizer, like eAccelerator for example, this may save even more time I think. The result is, that huge arrays, like the forumcache are now loaded simply by executing
PHP Code:
require_once(DATASTORE_FILE_DIR.'datastore_cache.php'); 
in your init.php.

Additionally this saves 4 calls to the function unserialize, which is broken in PHP 5.0.3 and 4.3.10, so this should be a good work around until PHP 5.0.4 and/or PHP 4.3.11 has been released.

It tries to finish, what has been started in the code and AFAICS you can even find the beginnings of that in the init.php of vB3.0.6,although I'm still running vB 3.0.3, so I can't tell, that this works without problems in newer versions.

Some Notes:
  • I recommend to place rebuild_dscache.php into a protected directory and to alter the first chdir(...); in the script, so that no one can abuse this, by flooding your forum with calls to that script.
  • Additionally you should remove the backup-files named datastore_cache_TIMESTAMP.php in your includes dir (or wherever the datastore-cache is stored) from time to from to save disc-space.
  • Use this at your own risk and make sure to backup first before installing this hack.
  • This hack is not designed for a multi-webserver setup. So unless the data on the filesystem is being updated on the fly its not recommended to install this.
Changelog:
0.8.1 Alpha:
  • removed a relic of an old hack from dscache.txt
  • Added config_dscache.php
  • backups can be turned off now
  • you can change the directory, where the datastore_cache.php is stored now
  • Fixed a bug, that may cause unserialize-errors in the CP out of the blue
  • rebuild_dscache.php is verbosive now
0.8.2 Alpha:
  • Added CVS-Ids to some files
  • Added a note to rebuild_dscache.php
  • Added a note about PHP < 4.2.0 to dscache.txt
0.8.3 Alpha:
  • Removed some relics of the old backup functionality
  • some changes to make it possible to run it at the commandline (see below)
  • Allow to specify a key in the config-file, so this script will only run if you specify the correct key (-k KEY on the commandline or ?key=KEY in the URL)
  • You can make the script silent by adding -s respectively ?silent=1
1.0 (Final):
  • No changes at all. All files are the same as in Version 0.8.3 Alpha.

Show Your Support

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

Comments
  #42  
Old 02-19-2005, 07:20 AM
mark99 mark99 is offline
 
Join Date: Oct 2002
Posts: 61
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If somebody could help with the above post then I'd be most grateful, it's a good solution for easing DB load.
Reply With Quote
  #43  
Old 02-19-2005, 08:47 AM
kall's Avatar
kall kall is offline
 
Join Date: Apr 2004
Location: New Zealand
Posts: 2,608
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Erwin
I got it working with my version of ushop - you basically need to add the ushop variables to datastore templates too.
Could you please share how you managed it?
Reply With Quote
  #44  
Old 03-20-2005, 05:30 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by mark99
1) When do you actually need to run the 'rebuild' process? Judging by the data - only when you change an option in the admin CP or add/edit one of your forums/category names & options. Does it need to be rebuilt after every new post or is it just doing the more static data?

2) Can I remove the admincp/rebuild....php script from the server when not needing to be used or does something require it to be there?

3) If I need to take my forums offline to change the options, then (as per above) will this corrupt my database? I'm confused about how this can be prevented as admins always need to update options/add forums etc. now and then. Do you take it offline, run the rebuild, update the options, run the rebuild, put it online and then run the rebuild again? Am a little confused
Do you have a single or multiple webservers, where your forum is running on? If your forum only runs on a single werserver, theres nothing to worry about.

PS: Sorry for the late reply. I've been busy with other projects recently.
Reply With Quote
  #45  
Old 03-20-2005, 05:37 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I have updated some files. I've only updated some of the documentation and no functionality so far, so you don't need to update anything. You'll only waste your time

For people with PHP < 4.2.0 I've added a note, what they could do to get the hack running.

Erwin: Scott pointed me to the following: How about triggering rebuild_dscache.php on all your server with something, like
fopen('http://www01.example.com/path/to/rebuild_dscache.php?silent=1&key=SECRET');
?

PS: PHP 4.3.11RC1 and PHP 5.0.4RC1 are out: http://news.php.net/php.general/210866
Reply With Quote
  #46  
Old 03-20-2005, 08:48 PM
Erwin's Avatar
Erwin Erwin is offline
 
Join Date: Jan 2002
Posts: 7,604
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kall
Could you please share how you managed it?
editing init.php and adding the ushop datastore into the cache too.
Reply With Quote
  #47  
Old 03-21-2005, 10:38 AM
nexialys
Guest
 
Posts: n/a
Default

SUGG: drop the config_dstore.php file and add the $dscache_dir var in the config.php
PHP Code:
define('CACHE_DATASTORE_FILE'true);
define('DATASTORE_FILE_DIR''./includes/'); 
$dscache_dobackup and BACKUP_DATASTORE_FILE are useless for now... would need to set it somewhere or delete it!

also, for security, isn't it suggested to NOT chmod the includes dir ?!
Reply With Quote
  #48  
Old 03-21-2005, 01:33 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by nexialys
$dscache_dobackup and BACKUP_DATASTORE_FILE are useless for now... would need to set it somewhere or delete it!
D'Oh, right. I removed the backups from the script but forgot to mention that, sry. I'll remove the redundant code.

However: I'm working on enabling rebuild_dscache.php for running as a shell script. You will then be able to specify a key, so the script will only run, if you call it with rebuild_dscache.php?k=sdiztgejklt for example.
Or with php rebuild_dscache.php -k sdiztgejklt on your favorite shell.

Another parameter would be ?silent=1 or -s to make the script silent, except error-messages.
Reply With Quote
  #49  
Old 03-21-2005, 03:00 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok, can anyone test the recent version?
It works fine on my test-system (commandline and through URI)

Changes:
0.8.3 Alpha:
  • Removed some relics of the old backup functionality
  • some changes to make it possible to run it at the commandline (see below)
  • Allow to specify a key in the config-file, so this script will only run if you specify the correct key (-k KEY on the commandline or ?key=KEY in the URL)
  • You can make the script silent by adding -s respectively ?silent=1
Reply With Quote
  #50  
Old 03-23-2005, 11:57 AM
Acido Acido is offline
 
Join Date: Apr 2003
Location: Argentina
Posts: 187
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OK, now i have this hack installed.
But i cant see any datastore_cache_TIMESTAMP.php file in my includes dir (i'm usign defaults dirs of the hack).

How i can to know if this is working?
Reply With Quote
  #51  
Old 03-23-2005, 02:51 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Acido
OK, now i have this hack installed.
But i cant see any datastore_cache_TIMESTAMP.php file in my includes dir (i'm usign defaults dirs of the hack).

How i can to know if this is working?
These are relics of the old backup functionality and won't be created anymore. I've left the note about them for users who still have old backup files in their includes-dir (or whereever they are storing their datastore_cache.php.

You should take a look at datastore_cache.php. It should contain the expanded arrays of the usergroupcache or the forumcache for example.
Reply With Quote
Reply

Thread Tools

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 03:12 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05152 seconds
  • Memory Usage 2,311KB
  • Queries Executed 25 (?)
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_php
  • (5)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (11)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_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete