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

Reply
 
Thread Tools
vB3 Forumhome Stats Cache Serialize hack v2.2 Details »»
vB3 Forumhome Stats Cache Serialize hack v2.2
Version: 1.00, by Boofo Boofo is offline
Developer Last Online: Jun 2012 Show Printable Version Email this Page

Version: 3.0.0 Rating:
Released: 02-10-2004 Last Update: Never Installs: 108
 
No support by the author.

vB3 Forumhome Stats Cache Serialize hack
Version 2.2
(By Boofo)

What does this hack do?
This hack will add some forum statistics to your forumhome that will be cached (to reduce the query load) for a certain amount of time that can be set to whatever you want. This covers most of the stats any forum Admin would use on his site.

Note: This is the setting for the time interval (in minutes) that you want the cache to be updated on. The default value is 10 minutes. The following code is in the index.php part of this hack.

$updatetime = 10;

Once you install the Admin CP setting (at the end of this file), you will be able to update this from the Admin CP vBulletin Options settings.

Credits:
I want to thank Tigga for the original Forumhome Statistics Cache hack for vB2, partly on what this hack is based. I also want to thank EvilLS1 for his time and patience in helping put this hack together. Another thank you goes out to Mike Gaidin for testing this thoroughly while I was putting together this install file. And, finally, thank you goes out to NTLDR, for helping me track down a very stupid mistake on my part which I had overlooked.

Version 2.0 credits go out to g-force2k2 for getting me started on the datastore version of this hack and guiding me through some of the rough parts in the beginning. And also to KirbyDE for answering all of my dummy questions while writing this version and verifying the code when I figured out all of my mistakes. This is my first attempt at using the datastore function but it seems to work better and be easier to code than the older way of doing things.

Version Information:
Version 1.0
--Initial release
Version 2.0 --Completely rewritten using the datastore function for vB3. It now uses "serialize" to store the data and "unserialize" to retrieve the data. There is also now 1 less query when reading from the cache.
Version 2.1 --Combined the "new threads since last visit" and "new posts since last visit" queries into 1 query, thus eliminating another query on cache hits. Thanks goes out to g_force2k2 for this one. Also added Admin CP setting code so you can change the time interval between cache updates via the Forum Display Option setting in the vBulletin Option in the Admin CP. That code to add is at the end of this file.
Version 2.2 --Added "Top Reputation" statistic (requested by rinkrat ) and totally re-did the template. It looks cleaner now.

New Installation:
Do all of the steps in this file.

To Update Version 1.0 to Version 2.0:
To update this hack you will need to do everything in this file over again except the second query (Query #2). After you have this hack up and running again and you have made sure it is running to your satisfaction, you can drop the statscache table (from version one of this hack) completely. It is no longer needed.

To Update Version 2.0 to Version 2.1:
You will need to re-add the code for the index.php and go to the end of this file and add the setting for the Admin CP.

To Update Version 2.1 to Version 2.2:
You will need to re-add the code for the index.php and replace the code for the forumhome template.

Installation overview:
Queries to run:
(2)
Files to edit: (2)
--index.php
--member.php
Templates to edit: (1)
--forumhome
Settings to add: (1)
--forumhomecachetime

vB3 Arcade hack stats addon:
https://vborg.vbsupport.ru/showpost....&postcount=262

The first attachment shows the Guest loggedin and the second attachment show the Registered Member and above loggedin.

Show Your Support

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

Comments
  #317  
Old 04-18-2004, 12:31 AM
dstruct2k's Avatar
dstruct2k dstruct2k is offline
 
Join Date: Dec 2002
Location: Winnipeg
Posts: 318
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Boofo -- I hope you're gonna fix the code for Top Thread Starter and Top Poster percentages to work with numbers over 1000.


Hint: The $totalposts and $totalthreads variables are sent through vb_number_format() BEFORE your hack runs. Numbers over 999 show up in the variables as "1,000" and as we all know, PHP can't do this: 1,002 / 9,534

(I've fixed this on my own, if you want my code, I'll give you it )
Reply With Quote
  #318  
Old 04-18-2004, 12:51 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by dstruct2k
Boofo -- I hope you're gonna fix the code for Top Thread Starter and Top Poster percentages to work with numbers over 1000.


Hint: The $totalposts and $totalthreads variables are sent through vb_number_format() BEFORE your hack runs. Numbers over 999 show up in the variables as "1,000" and as we all know, PHP can't do this: 1,002 / 9,534

(I've fixed this on my own, if you want my code, I'll give you it )
PM me what you have and I will take a look at it. I did solve the problem but I had to run an extra query to do it. Maybe your way would be better.
Reply With Quote
  #319  
Old 04-20-2004, 11:45 PM
Chris|vB Chris|vB is offline
 
Join Date: Jan 2004
Posts: 64
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Nice hack.
Reply With Quote
  #320  
Old 04-23-2004, 12:41 AM
Majik?'s Avatar
Majik? Majik? is offline
 
Join Date: Mar 2004
Location: Thunder Bay, ON, Canada
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Just installed with no problems, but I've cahnged it to update the stats via CRON. All of my scheduled tasks are done via a real CRON. I have it updating the cache every 5 minutes, which is good enough.

Had thought about every couple minutes, but 5's a nice good number. Now users will always be loading the stats from the cache. I jsut have to decide now how I want to group the stats because I'm going to break up the list a bit into sections (instead of one big list).

Great job!
Reply With Quote
  #321  
Old 04-23-2004, 05:00 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Majik?
Just installed with no problems, but I've cahnged it to update the stats via CRON. All of my scheduled tasks are done via a real CRON. I have it updating the cache every 5 minutes, which is good enough.

Had thought about every couple minutes, but 5's a nice good number. Now users will always be loading the stats from the cache. I jsut have to decide now how I want to group the stats because I'm going to break up the list a bit into sections (instead of one big list).

Great job!
I thought about using a cron job, but I like the option in the vb settings where I can change it on the fly. But, hey, whatever works for you, my friend.
Reply With Quote
  #322  
Old 04-24-2004, 02:14 AM
Majik?'s Avatar
Majik? Majik? is offline
 
Join Date: Mar 2004
Location: Thunder Bay, ON, Canada
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I never noticed before, but a member had pointed out to me that the thread views are showing as "0". Since I never notcied this before, I'll have to have a look at the CRON script I made.. Maybe I missed somehting, unless it was always that way.

Just looked and I have the threadview stuff where it should be.. It's the only thing that's not showing properly apparently. I have both the following as it should be in the CRON script..
PHP Code:
// <!-- THREAD VIEWS -->
$getthreadviews=$DB_site->query_first("
SELECT SUM(views) AS tviews
FROM " 
TABLE_PREFIX "thread
"
); 
PHP Code:
$statscache['getthreadviews'] = intval ($getthreadviews[tviews]); 
And the following in "/index.php"..
PHP Code:
 $statscache['getthreadviews'] = vb_number_format($statscache['getthreadviews']); 
Reply With Quote
  #323  
Old 04-24-2004, 02:23 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You missed something. That's why I have an option in the settings instead of doing it via cron job.
Reply With Quote
  #324  
Old 04-24-2004, 02:26 AM
Majik?'s Avatar
Majik? Majik? is offline
 
Join Date: Mar 2004
Location: Thunder Bay, ON, Canada
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boofo
You missed something. That's why I have an option in the settings instead of doing it via cron job.
I checke dand everything appears to be where it should be.. That and it's the only tihng not working.. Maybe t was like that before, I don't know becasue I never noticed. Am I missing something?
Reply With Quote
  #325  
Old 04-24-2004, 02:33 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It works fine for me and everyone else. You missed something in your script. Look at the install file and see what you forgot to add.
Reply With Quote
  #326  
Old 04-24-2004, 02:42 AM
Majik?'s Avatar
Majik? Majik? is offline
 
Join Date: Mar 2004
Location: Thunder Bay, ON, Canada
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I just chekced in phpMyAdmin and actally that's correct which I don't get.. The SUM does return 0. But, If I look at the threadviews table, there are numerous rows (pages of them).. But, thread.views is set to 0 for all threads. Would I be able to do a COUNT on the threadviews table and get the same result?

I looked in the install file again and everything relating to thread views is where it should be (that I saw anyhow).
Reply With Quote
  #327  
Old 04-24-2004, 02:52 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If it is showing 0 for thread views in the table, then you have something else going on. As long as you have this query:

PHP Code:
    // <!-- TOTAL THREAD VIEWS -->
    
$getthreadviews=$DB_site->query_first("
            SELECT SUM(views) AS tviews
            FROM " 
TABLE_PREFIX "thread
        "
); 
and this code:

PHP Code:
$statscache['getthreadviews'] = intval ($getthreadviews[tviews]); 
and this variable in the forumhome template:

HTML Code:
$statscache[getthreadviews]
then it will return whatever the table has in it for thread views.

Try this: Take the cron job off for this and set it up like in the install file and let it run for a few minutes and see if they start showing up then. Make sure to set the cache update time to 0 to test it.
Reply With Quote
  #328  
Old 04-24-2004, 02:56 AM
Majik?'s Avatar
Majik? Majik? is offline
 
Join Date: Mar 2004
Location: Thunder Bay, ON, Canada
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boofo
If it is showing 0 for thread views in the table, then you have something else going on. As long as you have this query:

PHP Code:
    // <!-- TOTAL THREAD VIEWS -->
    
$getthreadviews=$DB_site->query_first("
            SELECT SUM(views) AS tviews
            FROM " 
TABLE_PREFIX "thread
        "
); 
and this code:

PHP Code:
$statscache['getthreadviews'] = intval ($getthreadviews[tviews]); 
and this variable in the forumhome template:

HTML Code:
$statscache[getthreadviews]
then it will return whatever the table has in it for thread views.

Try this: Take the cron job off for this and set it up like in the install file and let it run for a few minutes and see if they start showing up then. Make sure to set the cache update time to 0 to test it.
Okay, but I don't know what difference that would make as I looked in the database directly and thread.views is set to "0" for all threads.. But, thread views are displaying in the forums as they should be. :S

I'd already changed it to do a COUNT on the threadviews table and now it's showing thread views as "2,827". I have thread views set to update hourly and noticed that the threadviews table's used for hourly updates instead of updating thread.views immediately upon viewing.
PHP Code:
// update views counter
if ($vboptions['threadviewslive'])
{
 
// doing it as they happen
 
$DB_site->shutdown_query("
  UPDATE " 
TABLE_PREFIX "thread
  SET views = views + 1
  WHERE threadid = " 
intval($threadinfo['threadid'])
 );
}
else
{
 
// or doing it once an hour
 
$DB_site->shutdown_query("
  INSERT INTO " 
TABLE_PREFIX "threadviews (threadid)
  VALUES (" 
intval($threadinfo['threadid']) . ')'
 
);

Will have to look at vB's CRON script and see why the thread.views isn't being updated.. But, the views are displaying i the forums htough. :S
Reply With Quote
  #329  
Old 04-24-2004, 03:27 AM
Majik?'s Avatar
Majik? Majik? is offline
 
Join Date: Mar 2004
Location: Thunder Bay, ON, Canada
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I had to add
PHP Code:
// ####################### SET PHP ENVIRONMENT ###########################
ignore_user_abort(1);
@
set_time_limit(0);
 
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS'1);
define('SESSION_BYPASS'1);
define('LOCATION_BYPASS'1);
define('THIS_SCRIPT''cron');
 
// ######################### REQUIRE BACK-END ############################
chdir('/path/to/forum/');
require_once(
'./global.php');
require_once(
'./includes/functions_cron.php');
 
// #######################################################################
// ######################## START MAIN SCRIPT ############################
// ####################################################################### 
to the top of the threadviews.php CRON script.. for some reason the other vB CRONs are running okay though.. It's strange because thread views were increasing, but were no where near as high as they are now that thread.views has been updated. It's now around 13,000.

It's the only cron that wasn' running properly for one reason or another, promotions, ban removal, etc. were all being done.
Reply With Quote
  #330  
Old 04-24-2004, 04:19 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

See? that's what happens when you take a hack that wasn't meant to be run by cron job and try to do it that way. At least you got it working your way now.
Reply With Quote
  #331  
Old 04-24-2004, 04:23 AM
Majik?'s Avatar
Majik? Majik? is offline
 
Join Date: Mar 2004
Location: Thunder Bay, ON, Canada
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boofo
See? that's what happens when you take a hack that wasn't meant to be run by cron job and try to do it that way. At least you got it working your way now.
Well, it wasn't a problem with your script.. It was with vB's default threadviews.php CRON script not running properly all the time. All the others were running except for that one and possibly he attachmentviews one (never checked).

I put them all into the real CRON though because it's better then running hrough a fake CRON. All is well now though.
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 05:18 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.14126 seconds
  • Memory Usage 2,404KB
  • Queries Executed 30 (?)
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_html
  • (9)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
  • (1)pagenav_pagelinkrel
  • (16)post_thanks_box
  • (16)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (16)post_thanks_postbit_info
  • (15)postbit
  • (16)postbit_onlinestatus
  • (16)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