Version: 1.00, by Tigga
Developer Last Online: Nov 2023
Version: 2.3.x
Rating:
Released: 04-03-2003
Last Update: Never
Installs: 31
No support by the author.
A little while ago I ran into this problem... I like having a lot of statistics on my forum's homepage, but I don't like having a lot of queries on that page. That got me to start thinking of a better way to do it, hence the creation of this hack.
How does this hack work?
It's pretty simple really. Instead of counting every single thread, post, member and etc every time someone loads your forum, it only counts these after a specified amount of time and updates one table that the information will be pulled from. This hack is especially useful for high traffic sites and can reduce the time it takes to load your forum's homepage.
Statistics Included:
Total Threads
Threads Today
Total Posts
Posts Today
Total Members
Newest Member
Top Poster
Top Thread Starter
If you are an admin, it will show you the last time the stats were updated as well.
(Please note that some of these started as hacks from other members at vB.org. Most of them are so simple though I don't see much of a point in trying to figure out which one's I got from here X months ago. If your hack was included here and you would like credit given please post here and I will add it.)
Normally these stats would add 8 queries to your forum's homepage. With this hack installed it will only perform 1 query most of the time, and 9 queries when it needs to update the information. I have found this very useful to cut down on the number of queries on my homepage, decrease the page's loading time, and put less overall stress on my server.
Well that's about it. I hope some others will find this hack useful and if anyone has some suggestions for other stats they would like to include in the stats cache please let me know and I will try to implement them.
Show Your Support
This modification may not be copied, reproduced or published elsewhere without author's permission.
I can't figure out how to get Link14716's Newest Member's First Post! (v1.1) to work with this hack. It shows the member's first post for the first 10 minutes until the cache updates again, then it disappears and seems to pop back in at random. Any ideas? The query for the post is...
Code:
// get newest user's first post
if ($getnewestusers['lastpost']!=0){
$getnewusersposts=$DB_site->query_first("SELECT * FROM post WHERE userid=$newuserid LIMIT 1");
$userfirstpost=$getnewusersposts['postid'];
if (!$getnewusersposts) {
$firstpost="";
} else {
$firstpost=" | <a href='showthread.php?postid=$userfirstpost#post$userfirstpost'>First Post!</a>";
}
}
Sorry Crazy Pete, for some reason I don't think I got email notification the first time you replied to this. To get that to work with the cache you will have to add some extra fields to the statscache table that can be updated. Or to just get it to work properly without being cached you would need to make sure your code isn't in the part where it gets the information for the cache. If you look for this code: $statsupdate = '';
And put your code for the newest member's first right above that it should work fine.
sometimes my (total) # of users don't show up. The active users show up all the time but my total users don't. Just everyone once and awhile they do which is weird becuase if they show up once, shouldn't they show up all the time?
I use this one to cache various things on our forums. For example, all the forum jump dropdowns (yeah, how often do you modify your forums, yet this is pulled from the database on nearly every page).
Out of curiosity, instead of updating every 10 (or however many) minutes, why not just create a cache table in your database and then update it whenever actions take place? That way, you still get "real time" stats but you still only need a single query on forumhome.
For example, you could:
- update cache whenever a post is made (posts today, total posts)
- update cache whenever a thread is started (total threads, total posts, posts today)
- update cache whenever someone registers (total members, newest member)
...and so on and so forth.
Is it just too much of a pain to implement it that way, or is there something else I am missing?
I like the idea of caching stats, but I am also bent on getting real-time stats.
Well part of the point of this hack is to help decrease strain on the server. If you're updating that table every time a post/thread is made, a new user joins, and etc then that's quite a few more queries to the database. If you're that bent on getting real-time stats that method would work and your forum homepage would load quicker with all the stats, but it would be hard to tell if it would be any better or worse on your server...