Re: Includes eating up my time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday 31 July 2007, Dave M G wrote:
> PHP general list,
>
> This is probably obvious to people who are good at PHP, but I'm
>
> I have a PHP based CMS (content management system) built, which has
> grown and become quite robust. It's now spread out over about 30 files,
> and each file represents one class within the object oriented design.
> Each are a couple hundred lines of code, and two or three of the most
> critical classes are over a thousand lines of code.
>
> While first building it, I didn't really anticipate quite that many
> files. What I did is have a file called "includes.php", which list all
> the files to be included. Then I in turn included "includes.php" at the
> beginning of my "index.php" file. Every page request passes through the
> "index.php" file, so that basically means every single file is included
> at the start of every new page request.

Yep, that's the downside of a shared-nothing architecture.  Initialization 
gets slower.

Possible solutions include:

- If you're using all classes, use PHP 5's __autoload() or better still 
spl_autoload_register() to load classes on demand instead of all at once.

- Refactor your code to conditionally include code only when needed.  E.g., 
you probably only need one page handler loaded per page request.  I'm in the 
process of doing that for Drupal right now and the savings are quite 
substantial.

- Op code cache.  This is exactly where an op code cache will get you the 
biggest win, by saving you the loading and parsing time.  

- Page caching.  To do page caching best, you should have the system do a 
partial bootstrap, check to see if it can serve a page from the cache, do so 
if it can, and if it can't only then finish loading the rest of the system.  
That way you skip most of the loading process on cached requests.

- Some combination of the above.  I'd do the op code cache last, as that's a 
sure-fire easy win while the others take effort.  So do those first, and then 
whatever's left you can throw an op code cache at for an extra boost.

-- 
Larry Garfield			AIM: LOLG42
larry@xxxxxxxxxxxxxxxx		ICQ: 6817012

"If nature has made any one thing less susceptible than all others of 
exclusive property, it is the action of the thinking power called an idea, 
which an individual may exclusively possess as long as he keeps it to 
himself; but the moment it is divulged, it forces itself into the possession 
of every one, and the receiver cannot dispossess himself of it."  -- Thomas 
Jefferson

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux