Re: Re: PHP programming strategy; lots of little include files, or a few big ones?

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

 



Daevid Vincent wrote:
>  
> 
>> -----Original Message-----
>> From: Al [mailto:news@xxxxxxxxxxxxx] 
>> Sent: Wednesday, January 06, 2010 5:09 PM
>> To: php-general@xxxxxxxxxxxxx
>> Subject:  Re: PHP programming strategy; lots of little 
>> include files, or a few big ones?
>>
>>
>>
>> On 1/6/2010 7:18 PM, clancy_1@xxxxxxxxxxxx wrote:
>>> I have a flexible program, which can do many different 
>> things according to the type of
>>> data it is fed.  Ideally the flexibility is achieved by 
>> calling different functions,
>>> though when the functionality is ill-defined I sometimes 
>> just include blocks of code.
>>> Ideally, from the point of program maintenance, each module 
>> should not be too long --
>>> preferably just a page or so. This doesn't raise problems 
>> in a compiled language, but in
>>> an interpreted language like PHP the programmer must decide 
>> whether to lump a whole lot of
>>> functions into a single large include file, or to include 
>> lots of little files as the
>>> particular functions are needed.
>>>
>>> The first case can lead to memory bloat, as there are 
>> likely to be a lot of unused
>>> functions in memory on any given pass, whereas the second 
>> case may require lots of little
>>> files to be loaded.
>>>
>>> Are there likely to be significant performance costs for 
>> either approach, and what are
>>> your feelings about the relative virtues of the two approaches?
> 
> I think it's a case by case basis. Generally File I/O is expensive, but
> then again, as you say, having everything in a couple files is also
> sub-optimal for organizing and keeping things modular.
> 
> I suggest you go with smaller files that are organized into logical
> 'chunks'. For example, functions that are used frequently are grouped into
> a common.inc.php rather than by topic (such as file/date/xml/forms/etc).
> And then use topical includes for the rest.
> 
> More importantly, I suggest you get a good caching system like memecached
> or any of the others out there. Then you can pre-compile and load these
> files and the whole point becomes close to moot.
> 
> ÐÆ5ÏÐ 
> http://daevid.com
> 
> "Some people, when confronted with a problem, think 'I know, I'll use
> XML.'"
> Now they have two problems. 
> 
> 

I had a similar issue but with classes (not functions).
I opted to keep my classes short and succinct, rather than shoving all
the method functionality into one all-purpose class.
Instead of blindly loading all the little classes on each http request,
I used (and was recommended on this list to use) __autoload().  The
script would only load my classes if the individual request needed it.
This helped to avoid the memory bloat.  I've heard magic functions like
__autoload are a bit slower, but the code is so much cleaner b/c of it.

Also, an opcode cache as suggested previously would facilitate the rapid
include of many small files.

Unfortunately, php does not offer an __autoload() type function to
autoload functions.

If you are able to encapsulate your functions functionality into classes
you may be able to use the above solution of using an opcode cache to
help __autoload() a bunch of small classes.

hth,
dK
`

-- 
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