Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Beta Releases
FAQ Community Calendar Today's Posts Search

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
  #12  
Old 01-25-2005, 12:42 PM
nexialys
Guest
 
Posts: n/a
Default

Quote:
Originally Posted by Acido
I cant found this code in includes/init.php
PHP Code:
 $optionsfound = !empty($vboptions); 
search simply for $optionsfound ... if you don't have it, you have a strange vbulletin version, because this variable is there since 3.0... line 549 of the actual 3.0.6...

BTW, the instructions are strange.. maybe thefile is corrupted ?!
look:
Quote:
#-------------------==={FIND}===------------------#
################################################## #

$optionsfound = !empty($vboptions);

################################################## #
#-------------==={REPLACE IT WITH}===-------------#
################################################## #

// START Hack: datastore_cache
//- $optionsfound = !empty($vboptions);
if (is_array($vboptions) AND isset($vboptions['languageid']))
{
$optionsfound = true;
}
if ($url == 'index.php')
{
$url = "$vboptions[forumhome].php";
}
$versionnumber = &$vboptions['templateversion'];
// END Hack: datastore_cache
", $spiderpattern) . ')#';

################################################## #
what's that
Quote:
", $spiderpattern) . ')#';
Reply With Quote
  #13  
Old 01-25-2005, 01:21 PM
Acido Acido is offline
 
Join Date: Apr 2003
Location: Argentina
Posts: 187
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by nexialys
search simply for $optionsfound ... if you don't have it, you have a strange vbulletin version, because this variable is there since 3.0... line 549 of the actual 3.0.6...

BTW, the instructions are strange.. maybe thefile is corrupted ?!
look:

what's that
The File is OK. No problem there.

In my init.php i have 5 instances of $optionsfound (listing the more relevants):

PHP Code:
 // load options, special templates and default language
$optionsfound false;
if (
defined('VB3UPGRADE'))
............. 
PHP Code:
// get $vboptions array
    
case 'options':
    {
     
$vboptions unserialize($storeitem['data']);
     if (
is_array($vboptions) AND isset($vboptions['languageid']))
     {
     
$optionsfound true;
     }
............. 
PHP Code:
 // Fatal Error
if (!$optionsfound)
{
require_once(
'./includes/adminfunctions.php');
require_once(
'./includes/functions.php');
$vboptions build_options(
.............. 
You think that i can try the hack in this init? Or i need wait to upgrade vbulletin?
Reply With Quote
  #14  
Old 01-25-2005, 01:47 PM
nexialys
Guest
 
Posts: n/a
Default

@Acido.. you have listed the less relevants... look at that one:
$optionsfound = !empty($vboptions);

you have to forget the tabs (just find the text, not the line)
Reply With Quote
  #15  
Old 01-25-2005, 03:04 PM
Acido Acido is offline
 
Join Date: Apr 2003
Location: Argentina
Posts: 187
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by nexialys
@Acido.. you have listed the less relevants... look at that one:
$optionsfound = !empty($vboptions);

you have to forget the tabs (just find the text, not the line)
My init.php have not that line. In fact, my board is running without the file datastore_cache.php

Not sure, but i think that your hack need 3.0.2 or higher to work. I'll try it after upgrade.

Thanx for your reply's.
Reply With Quote
  #16  
Old 01-25-2005, 03:27 PM
Guy G Guy G is offline
 
Join Date: Nov 2004
Posts: 250
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Will this saqves queries?
If i dont have the unserialize bug will this effect?
Reply With Quote
  #17  
Old 01-25-2005, 04:01 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by nexialys

BTW, the instructions are strange.. maybe thefile is corrupted ?!
look:
Quote:
", $spiderpattern) . ')#';
what's that
I took the file of an older hack and copy&pasted the changes for this hack into that file.

Its just a leftover of that hack and it will be removed in future versions.
Reply With Quote
  #18  
Old 01-25-2005, 04:07 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Guy G
Will this saqves queries?
No. Only the traffic between the Webserver and the database-server would be reduced a bit.
Quote:
If i dont have the unserialize bug will this effect?
In most cases: No.
If your database and your webserver are on different machines it may have an effect, depending on the connection between them.
Reply With Quote
  #19  
Old 01-25-2005, 04:08 PM
Guy G Guy G is offline
 
Join Date: Nov 2004
Posts: 250
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Stadler
No. Only the traffic between the Webserver and the database-server would be reduced a bit.In most cases: No.
If your database and your webserver are on different machines it may have an effect, depending on the connection between them.
Ok Thanks.
Reply With Quote
  #20  
Old 01-25-2005, 04:12 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Acido
I cant found this code in includes/init.php

PHP Code:
 $optionsfound = !empty($vboptions); 
Can you provide another location to add the hack code?

I'm using vbulletin 3.0.1

Thanx in advance.
Please upgrade to vB 3.0.2 at least. You can try to use the init.php from a newer version and to copy datastore_cache.php.new to datastore_cache.php. But I'm not sure, if this will work.
Quote:
Originally Posted by Acido
My init.php have not that line. In fact, my board is running without the file datastore_cache.php

Not sure, but i think that your hack need 3.0.2 or higher to work. I'll try it after upgrade.

Thanx for your reply's.
See above
Reply With Quote
  #21  
Old 01-25-2005, 04:19 PM
Stadler Stadler is offline
 
Join Date: Apr 2002
Location: Kiel, Germany
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Erwin
Mmm... you need to chmod 0777 the includes directory or you get a permission denied. Correct?
Yes. I'll add an option to change the directory, where the file is located in future versions.
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 03:51 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.05278 seconds
  • Memory Usage 2,324KB
  • 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
  • (6)bbcode_php
  • (13)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
  • (3)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
  • (9)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