vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=187)
-   -   Remove unneeded code (https://vborg.vbsupport.ru/showthread.php?t=175926)

TheComputerGuy 04-11-2008 10:00 PM

Remove unneeded code
 
Bandwidth is a concern for me, as well as size of files. By default index.php in the main directory is 18kb, with the file modifications reduces it to 9kb. This will also reduce the number of queries.

This is only useful, because I do not use the Calendar/Birthday features on my index.php.
If you do use the birthday features or calendar features turned on, this will cause a an error on page load. You must turn it off in the admincp!

Before attempting this, please backup the index.php. If you have hacked your index.php you must look at how I have done this simple file edit.

I do this each time I install a new version of vBulletin.

If you want a demo...ummm... http://www.gunandgame.com/forums/


Find this code:
PHP Code:

// get special data templates from the datastore
$specialtemplates = array(
    
'userstats',
    
'birthdaycache',
    
'maxloggedin',
    
'iconcache',
    
'eventcache',
    
'mailqueue'
); 

Replace it with:
PHP Code:

// get special data templates from the datastore
$specialtemplates = array(
    
'userstats',
    
'maxloggedin',
    
'iconcache',
    
'mailqueue'
); 

Find this code:
PHP Code:

// pre-cache templates used by all actions
$globaltemplates = array(
    
'ad_forumhome_afterforums',
    
'FORUMHOME',
    
'forumhome_event',
    
'forumhome_forumbit_level1_nopost',
    
'forumhome_forumbit_level1_post',
    
'forumhome_forumbit_level2_nopost',
    
'forumhome_forumbit_level2_post',
    
'forumhome_lastpostby',
    
'forumhome_loggedinuser',
    
'forumhome_moderator',
    
'forumhome_subforumbit_nopost',
    
'forumhome_subforumbit_post',
    
'forumhome_subforumseparator_nopost',
    
'forumhome_subforumseparator_post',
    
'forumhome_markread_script',
    
'forumhome_birthdaybit'
); 

Replace the code with this:
PHP Code:

// pre-cache templates used by all actions
$globaltemplates = array(
    
'ad_forumhome_afterforums',
    
'FORUMHOME',
    
'forumhome_forumbit_level1_nopost',
    
'forumhome_forumbit_level1_post',
    
'forumhome_forumbit_level2_nopost',
    
'forumhome_forumbit_level2_post',
    
'forumhome_lastpostby',
    
'forumhome_loggedinuser',
    
'forumhome_moderator',
    
'forumhome_subforumbit_nopost',
    
'forumhome_subforumbit_post',
    
'forumhome_subforumseparator_nopost',
    
'forumhome_subforumseparator_post',
    
'forumhome_markread_script'
); 

Ok, half way done!
Find this code:
PHP Code:

// ### TODAY'S BIRTHDAYS #################################################
if ($vbulletin->options['showbirthdays'])
{
    if (!
is_array($vbulletin->birthdaycache)
        OR (
$today != $vbulletin->birthdaycache['day1'] AND $today != $vbulletin->birthdaycache['day2'])
        OR !
is_array($vbulletin->birthdaycache['users1'])
    )
    {
        
// Need to update!
        
require_once(DIR '/includes/functions_databuild.php');
        
$birthdaystore build_birthdays();
        
DEVDEBUG('Updated Birthdays');
    }
    else
    {
        
$birthdaystore $vbulletin->birthdaycache;
    }

    switch (
$today)
    {
        case 
$birthdaystore['day1']:
            
$birthdaysarray $birthdaystore['users1'];
            break;

        case 
$birthdaystore['day2']:
            
$birthdaysarray $birthdaystore['users2'];
            break;
    }
    
// memory saving
    
unset($birthdaystore);

    
$birthdaybits = array();

    foreach (
$birthdaysarray AS $birthday)
    {
        eval(
'$birthdaybits[] = "' fetch_template('forumhome_birthdaybit') . '";');
    }

    
$birthdays implode(', '$birthdaybits);

    if (
$stylevar['dirmark'])
    {
        
$birthdays str_replace('<!--rlm-->'$stylevar['dirmark'], $birthdays);
    }

    
$show['birthdays'] = iif ($birthdaystruefalse);
}
else
{
    
$show['birthdays'] = false;


Remove it.

Find this code:
PHP Code:

// ### TODAY'S EVENTS #################################################
if ($vbulletin->options['showevents'])
{
    require_once(
DIR '/includes/functions_calendar.php');

    
$future gmdate('n-j-Y' TIMENOW 86400 86400 $vbulletin->options['showevents']);

    if (!
is_array($vbulletin->eventcache) OR $future != $vbulletin->eventcache['date'])
    {
        
// Need to update!
        
$eventstore build_events();
        
DEVDEBUG('Updated Events');
    }
    else
    {
        
$eventstore $vbulletin->eventcache;
    }

    unset(
$eventstore['date']);
    
$events = array();
    
$eventcount 0;

    foreach (
$eventstore AS $eventid => $eventinfo)
    {
        
$offset $eventinfo['dst'] ? $vbulletin->userinfo['timezoneoffset'] : $vbulletin->userinfo['tzoffset'];
        
$eventstore["$eventid"]['dateline_from_user'] = $eventinfo['dateline_from_user'] = $eventinfo['dateline_from'] + $offset 3600;
        
$eventstore["$eventid"]['dateline_to_user'] = $eventinfo['dateline_to_user'] = $eventinfo['dateline_to'] + $offset 3600;
        
$gettime TIMENOW $vbulletin->options['hourdiff'];
        
$iterations 0;
        
$todaydate getdate($gettime);

        if (!
$eventinfo['singleday'] AND !$eventinfo['recurring'] AND $eventinfo['dateline_from_user'] < gmmktime(000$todaydate['mon'], $todaydate['mday'], $todaydate['year']))
        {
            
$sub = -3;
        }
        else if (
$eventinfo['holidayid'])
        {
            
$sub = -2;
        }
        else if (
$eventinfo['singleday'])
        {
            
$sub = -1;
        }
        else
        {
            
$sub $eventinfo['dateline_from_user'] - (86400 * (intval($eventinfo['dateline_from_user'] / 86400)));
        }

        if (
$vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
        {
            if (
$eventinfo['userid'] == $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewothersevent'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
            {
                if (!
$eventinfo['recurring'] AND !$vbulletin->options['showeventtype'] AND !$eventinfo['singleday'] AND cache_event_info($eventinfo$todaydate['mon'], $todaydate['mday'], $todaydate['year']))
                {
                    
$events["$eventid"][] = $gettime "_$sub";
                }
                else
                {
                    while (
$iterations $vbulletin->options['showevents'])
                    {
                        
$addcache false;

                        
$todaydate getdate($gettime);
                        if (
$eventinfo['holidayid'] AND $eventinfo['recurring'] == 6)
                        {
                            if (
$eventinfo['recuroption'] == "$todaydate[mon]|$todaydate[mday]")
                            {
                                
$addcache true;
                            }
                        }
                        else if (
cache_event_info($eventinfo$todaydate['mon'], $todaydate['mday'], $todaydate['year']))
                        {
                            
$addcache true;
                        }

                        if (
$addcache)
                        {
                            if (!
$vbulletin->options['showeventtype'])
                            {
                                
$events["$eventid"][] = $gettime "_$sub";
                            }
                            else
                            {
                                
$events["$gettime"][] = $eventid;
                            }
                            
$eventcount++;
                        }

                        
$iterations++;
                        
$gettime += 86400;
                    }
                }
            }
        }
    }

    if (!empty(
$events))
    {
        if (
$vbulletin->options['showeventtype'])
        {
            
ksort($eventsSORT_NUMERIC);
        }
        else
        {
            function 
groupbyevent($a$b)
            {
                if (
$a[0] == $b[0])
                {
                    return 
0;
                }
                else
                {
                    
$values1 explode('_'$a[0]);
                    
$values2 explode('_'$b[0]);
                    if (
$values1[0] != $values2[0])
                    {
                        return (
$values1[0] < $values2[0]) ? -1;
                    }
                    else
                    {
                        
// Same day events. Check the event start time to order them properly (compare number of seconds from 00:00)
                        
return ($values1[1] < $values2[1]) ? -1;
                    }
                }
            }
            
uasort($events'groupbyevent');
            
// this crazy code is to remove $sub added above that ensures a event maintains its position after the sort
            // if associative values are the same
            
foreach($events AS $eventid => $times)
            {
                foreach (
$times AS $key => $time)
                {
                    
$events["$eventid"]["$key"] = intval($time);
                }
            }
        }

        
$upcomingevents '';
        foreach(
$events AS $index => $value)
        {
            
$pastevent 0;
            
$pastcount 0;

            
$comma $eventdates $daysevents '';
            if (!
$vbulletin->options['showeventtype'])
            {    
// Group by Event // $index = $eventid
                
$eventinfo $eventstore["$index"];
                if (empty(
$eventinfo['recurring']) AND empty($eventinfo['singleday']))
                {    
// ranged event -- show it from its real start and real end date (vbgmdate)
                    
$fromdate vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_from_user'], falsetruefalsetrue);
                    
$todate vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_to_user'], falsetruefalsetrue);
                    if (
$fromdate != $todate)
                    {
                        
$eventdates construct_phrase($vbphrase['event_x_to_y'], $fromdate$todate);
                    }
                    else
                    {
                        
$eventdates vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_from_user'], falsetruefalsetrue);
                    }
                    
$day vbdate('Y-n-j'$eventinfo['dateline_from_user'], falsefalse);
                }
                else
                {
                    unset(
$day);
                    foreach(
$value AS $key => $dateline)
                    {
                        if ((
$dateline 86400) == $pastevent AND !$eventinfo['holidayid'])
                        {
                            
$pastevent $dateline;
                            
$pastcount++;
                            continue;
                        }
                        else
                        {
                            if (
$pastcount)
                            {
                                
$eventdates construct_phrase($vbphrase['event_x_to_y'], $eventdatesvbdate($vbulletin->options['dateformat'], $pasteventfalsetruefalse));
                            }
                            
$pastcount 0;
                            
$pastevent $dateline;
                        }
                        if (!
$day)
                        {
                            
$day vbdate('Y-n-j'$datelinefalsefalsefalse);
                        }
                        
$eventdates .= $comma vbdate($vbulletin->options['dateformat'], $datelinefalsetruefalse);
                        
$comma ', ';
                    }
                    if (
$pastcount)
                    {
                        
$eventdates construct_phrase($vbphrase['event_x_to_y'], $eventdatesvbdate($vbulletin->options['dateformat'], $pasteventfalsetruefalse));
                    }
                }

                if (
$eventinfo['holidayid'])
                {
                    
$callink '<a href="calendar.php?' $vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day\">" $vbphrase['holiday' $eventinfo['holidayid'] . '_title'] . "</a>";
                }
                else
                {
                    
$callink '<a href="calendar.php?' $vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
                }
            }
            else
            {    
// Group by Date
                
$eventdate vbdate($vbulletin->options['dateformat'], $indexfalsetruefalse);

                
$day vbdate('Y-n-j'$indexfalsefalsefalse);
                foreach(
$value AS $key => $eventid)
                {
                    
$eventinfo $eventstore["$eventid"];
                    if (
$eventinfo['holidayid'])
                    {
                        
$daysevents .= $comma '<a href="calendar.php?' $vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day\">" $vbphrase['holiday' $eventinfo['holidayid'] . '_title'] . "</a>";
                    }
                    else
                    {
                        
$daysevents .= $comma '<a href="calendar.php?' $vbulletin->session->vars['sessionurl'] . "do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
                    }
                    
$comma ', ';
                }
            }

            (
$hook vBulletinHook::fetch_hook('forumhome_event')) ? eval($hook) : false;
            eval(
'$upcomingevents .= "' fetch_template('forumhome_event') . '";');
        }
        
// memory saving
        
unset($events$eventstore);
    }
    
$show['upcomingevents'] = iif ($upcomingeventstruefalse);
    
$show['todaysevents'] = iif ($vbulletin->options['showevents'] == 1truefalse);
}
else
{
    
$show['upcomingevents'] = false;


Remove it.

Reupload the index.php.

trance nation 04-12-2008 12:38 PM

I'm sure it works, If it does good work.

~Trance

Marco van Herwaarden 04-12-2008 12:47 PM

None of these changes will make any difference to your bandwidth. PHP is executed on the server, the php-files are never downloaded to the client so it does not use any bandwidth.

Also removing those parts of the code wil not make any difference to performance as it is already not executed if these options are turned off.

lazydesis 04-12-2008 12:49 PM

i agree with marco .. unless u r removing JS files or CSS files .. its not gonna change anything

Princeton 04-12-2008 02:28 PM

nothing to do with bandwidth

the suggested changes are not necessary - the vbulletin code (that's suggested for removal) is never excuted when turned off

Kentaurus 04-12-2008 02:52 PM

Well... to be really, really, really strict.... Removing some code will actually make it run "a little" faster. Because at least the "if" is executed, and if you remove that, you are getting one instruction off.

Doing some testing on my server... if I remove that code, I get a performance gain of 0.00002 seconds, that means, after the 50,000 visitor, I get one second worth of better performance! :)

What I am trying to say is that, unless you have more than 50,000 visitors per minute. Don't bother doing this.....

And... as it has been said, none of this has any effect on bandwidth. The size of the scripts is totally different to the size of the generated page sent to the user.

TheComputerGuy 04-12-2008 03:44 PM

so an 18kb file doesn't matter compared to 9kb? the savings of a query doesn't matter either?

Kentaurus 04-13-2008 03:03 AM

That's right. It doesn't matter.
The query doesn't get executed if the option is disabled.

And no, the filesize is not an indicative. You may save *a little* memory by loading less code, and you save the 2E-5 executing time of the "if" instruction. The size of the file itself doesn't matter at all.

This is not really useful, because the performance "gain" is really really too small. You'd need to have a huge amount of traffic. Even with 5000 users online it would make no difference at all. Even with 10,000.........

This is not the correct way of doing optimizations. Turn debug mode, and check where the bottlenecks are. A large memory-usage query, a long running one, php code that has high complexity or too much recursion. Removing code that doesn't get executed anyway doesn't make any difference and it's only fooling yourself. Do some benchmarks and test by yourself.

TheComputerGuy 04-14-2008 12:06 AM

Thanks, I'm still learning, so I will return with a more useful tweak soon.


All times are GMT. The time now is 11:21 AM.

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.01399 seconds
  • Memory Usage 1,923KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (6)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete