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
Microstats (only for admin) - load times, server loads, queries, uncached templates! Details »»
Microstats (only for admin) - load times, server loads, queries, uncached templates!
Version: 1.00, by Erwin Erwin is offline
Developer Last Online: May 2013 Show Printable Version Email this Page

Version: 3.0.3 Rating:
Released: 01-04-2004 Last Update: Never Installs: 190
 
No support by the author.

Version 1.0 - works for most servers
Updated 1.1 - optimized code
Updated 1.2 - added names of uncached templates!

Okay, the original was by TECK. This is NOT based on his code - it is based on vB3's native code. If TECK wants me to remove this, I will do so. This is just my version that I use for my private forums.

Information shown:
1) Page loading times
2) Number of Queries
3) Server Loads
4) Number of Any Uncached Templates
5) Name of Uncached Templates (NEW!)

By default only an Admin (usergroup 6) can see it. Feel free to modify this bit.

It's very easy to install.

Open includes/functions.php:

Find:

PHP Code:
// ####################################################################
    // temporary code
    
global $_TEMPLATEQUERIES$tempusagecache$DEVDEBUG$_SERVER$debug
UNDERNEATH, ADD:

Version 1.2 - more optimized but requires /proc on your server - try this, if server loads don't show up use Version 1.02 below

PHP Code:
// Microstats hack
if ($bbuserinfo[usergroupid]==6) {
                
$pageendtime microtime(); 
                
$starttime explode(' '$pagestarttime); 
                
$endtime explode(' '$pageendtime); 
                
$totaltime vb_number_format($endtime[0] - $starttime[0] + $endtime[1] - $starttime[1], 5); 
                
$loadavg = @file_get_contents("/proc/loadavg"); 
                if (
$loadavg) { 
                        
$regs explode(" ",$loadavg); 
                        
$serverload=' [Server Loads: <b>'.$regs[0].'</b> '.$regs[1].' : '.$regs[2].']'
                } 
                
$debughtml "<center><span class=\"smallfont\">Page generated in <b>$totaltime</b> seconds with <b>$query_count</b> queries" iif($_TEMPLATEQUERIES" (<b>" sizeof($_TEMPLATEQUERIES) . "</b> queries for uncached templates)"'') . "$serverload</span></center>"
    
ksort($tempusagecache);
    foreach (
$tempusagecache AS $tempname => $times)
    {
    if (
$_TEMPLATEQUERIES["$tempname"]) $debughtml .= "<center><span class=\"smallfont\">Uncached templates: <font color=\"red\"><b>$tempname</b></font> ($times)</span></center>";
    }
                
$vartext str_replace('</body>'"$debughtml\n</body>"$vartext); 
 
}
//Microstats Hack 


Version 1.02 - Use this if Version 1.1 doesn't work for you.

PHP Code:
// Microstats hack 
if ($bbuserinfo[usergroupid]==6) {
$pageendtime microtime(); 
$starttime explode(' '$pagestarttime); 
$endtime explode(' '$pageendtime); 
$totaltime vb_number_format($endtime[0] - $starttime[0] + $endtime[1] - $starttime[1], 5); 
if (
$stats=@exec('uptime')) { 
     
preg_match('/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/',$stats,$regs); 
     
$serverload=' [Server Loads: <b>'.$regs[1].'</b> ? '.$regs[2].' : '.$regs[3].']'
     } 
$debughtml "<center><span class=\"smallfont\">Page generated in <b>$totaltime</b> seconds with <b>$query_count</b> queries" iif($_TEMPLATEQUERIES" (<b>" sizeof($_TEMPLATEQUERIES) . "</b> queries for uncached templates)"'') . "$serverload</span>"
$vartext str_replace('</body>'"$debughtml\n</body>"$vartext); 
    
ksort($tempusagecache);
    foreach (
$tempusagecache AS $tempname => $times)
    {
    if (
$_TEMPLATEQUERIES["$tempname"]) $debughtml .= "<center><span class=\"smallfont\">Uncached templates: <font color=\"red\"><b>$tempname</b></font> ($times)</span></center>";
    }
}
//Microstats Hack 

Done! As simple as that. No need to enable debug mode.

If you want only yourself to have this information, change:
if ($bbuserinfo[usergroupid]==6) {
to
if ($bbuserinfo[userid]==1) {

And replace 1 with your userid.

To let everyone see it, remove that line, and the last } of the code above.

Below is a screenshot of how my forumhome microstats look.

EDIT: Thanks to kmike, I optimized the code. This should lessen the load when checking the server loads slightly.

Version 1.2 and 1.02 now has added code to show NAMES OF UNCACHED TEMPLATES!

Show Your Support

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

Comments
  #132  
Old 04-22-2004, 03:06 AM
kmike kmike is offline
 
Join Date: Oct 2002
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

d3nnis:
Do you have access to server's shell? If so, what's output of "ls -l /proc/loadavg" and
"ls -ld /proc" ?
Anyway, you might want to revert to previous version of the hack for the time being...
Reply With Quote
  #133  
Old 04-22-2004, 03:21 AM
Jolten Jolten is offline
 
Join Date: Mar 2004
Posts: 749
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

/me clicks install. Thanks Erwin.
Reply With Quote
  #134  
Old 04-22-2004, 04:56 AM
d3nnis d3nnis is offline
 
Join Date: Jun 2003
Location: Singapore
Posts: 211
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kmike
d3nnis:
Do you have access to server's shell? If so, what's output of "ls -l /proc/loadavg" and
"ls -ld /proc" ?
Anyway, you might want to revert to previous version of the hack for the time being...

the server is owned by me. I will check it out tonite when i am back home.
Reply With Quote
  #135  
Old 04-22-2004, 04:56 AM
d3nnis d3nnis is offline
 
Join Date: Jun 2003
Location: Singapore
Posts: 211
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Erwin
To cache a template, you need to find out which ones are not being cached. Then you add it to the top of the PHP file being run, in the section where it lists templates to be cached.

I may add a feature to this hack so that uncached templates show up with names.

that will be great!

by the way what kind of problem does uncached templates gives? increase server load?
Reply With Quote
  #136  
Old 04-22-2004, 08:26 AM
kmike kmike is offline
 
Join Date: Oct 2002
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
by the way what kind of problem does uncached templates gives? increase server load?
Each vb3 page is getting all "cached" templates in a batch, in one SQL query. Every uncached template needs separate query to run, thus increasing load on SQL server.

To find out what templates are uncached, one have to run the script in debug mode. Of course tt could be done simply by putting $debug=1; at the beginning of the script, but you don't want to scare your users, do you? So you can install one of the following hacks to restrict debug mode to certain users/groups/IPs:

https://vborg.vbsupport.ru/showthread.php?t=59605
https://vborg.vbsupport.ru/showthread.php?t=61242

After installation, you'll have a table of template usage at the bottom of debugged page, with uncached templates highlighted.
To cache template simply edit debugged script and add template name to globaltemplates array which is usually defined at the very top of the script.
Reply With Quote
  #137  
Old 04-22-2004, 11:21 AM
d3nnis d3nnis is offline
 
Join Date: Jun 2003
Location: Singapore
Posts: 211
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kmike
d3nnis:
Do you have access to server's shell? If so, what's output of "ls -l /proc/loadavg" and
"ls -ld /proc" ?
Anyway, you might want to revert to previous version of the hack for the time being...

here's my output

root@xxx [~]# ls -l /proc/loadavg
-r--r--r-- 1 root root 0 Apr 22 20:20 /proc/loadavg
root@xxx [~]# ls -ld /proc
dr-xr-xr-x 286 root root 0 Apr 22 07:06 /proc/
Reply With Quote
  #138  
Old 04-22-2004, 01:56 PM
d3nnis d3nnis is offline
 
Join Date: Jun 2003
Location: Singapore
Posts: 211
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kmike
Each vb3 page is getting all "cached" templates in a batch, in one SQL query. Every uncached template needs separate query to run, thus increasing load on SQL server.

To find out what templates are uncached, one have to run the script in debug mode. Of course tt could be done simply by putting $debug=1; at the beginning of the script, but you don't want to scare your users, do you? So you can install one of the following hacks to restrict debug mode to certain users/groups/IPs:

https://vborg.vbsupport.ru/showthread.php?t=59605
https://vborg.vbsupport.ru/showthread.php?t=61242

After installation, you'll have a table of template usage at the bottom of debugged page, with uncached templates highlighted.
To cache template simply edit debugged script and add template name to globaltemplates array which is usually defined at the very top of the script.

i written my TOS page , http://forums.keeptouch.net/tos.php using this code :

Code:
<?php

  $globaltemplates = array(
	'navbar',
	'tos'
  );

  require_once('./global.php');

  eval('$navbar = "' . fetch_template('navbar') . '";');
  eval('print_output("' . fetch_template('tos') . '");');

?>
Previously I did not add :

Code:
$globaltemplates = array(
	'navbar',
	'tos'
  );
so it appears as 1 uncached template but after i added the above code, it does not appears anymore. Am I on the right track?
Reply With Quote
  #139  
Old 04-22-2004, 05:13 PM
kmike kmike is offline
 
Join Date: Oct 2002
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
root@xxx [~]# ls -l /proc/loadavg
-r--r--r-- 1 root root 0 Apr 22 20:20 /proc/loadavg
root@xxx [~]# ls -ld /proc
dr-xr-xr-x 286 root root 0 Apr 22 07:06 /proc/
Hmm, not sure what's going on here. Do you have safe mode enabled, by chance?
What is output of this script:
PHP Code:
<?php
echo "file_get_contents: ".function_exists(file_get_contents)."<br>";
echo 
"safe_mode: ".ini_get(safe_mode)."<br>";
?>
As to templates caching, you've got it absolutely right.
Reply With Quote
  #140  
Old 04-23-2004, 12:20 AM
d3nnis d3nnis is offline
 
Join Date: Jun 2003
Location: Singapore
Posts: 211
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kmike
Hmm, not sure what's going on here. Do you have safe mode enabled, by chance?
What is output of this script:
PHP Code:
<?php
echo "file_get_contents: ".function_exists(file_get_contents)."<br>";
echo 
"safe_mode: ".ini_get(safe_mode)."<br>";
?>
As to templates caching, you've got it absolutely right.

nope, safe mode definitely not on

my output of this script is

file_get_contents: 1
safe_mode:
Reply With Quote
  #141  
Old 04-23-2004, 03:57 AM
kmike kmike is offline
 
Join Date: Oct 2002
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Very weird.
Ok, what does "cat /proc/loadavg" show when run in the command line?
And since we're so deep in testing, what's output of this php script:
PHP Code:
<?php
echo file_get_contents("/proc/loadavg");
?>
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 04:52 AM.


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.05194 seconds
  • Memory Usage 2,364KB
  • Queries Executed 27 (?)
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
  • (6)bbcode_php
  • (7)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
  • (2)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)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_postinfo_query
  • fetch_postinfo
  • 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