Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How many PHP includes are too many?

Each page on my website is rendered using PHP.

Each PHP file uses around 10 includes. So for every page that is displayed, the server needs to fetch 10 files, in addition to the rest of its functions (MySQL, etc).

Should I combine them into a single include file? Will that make ANY difference to the real-world speed? It's not a trivial task as there would be a spaghetti of variable scope to sort out.

like image 797
soupagain Avatar asked Mar 10 '10 15:03

soupagain


People also ask

What happens if you have too many PHP include files?

It will become a problem when too many includes are used, because the web server will have to perform an I/O operetation for each include you have. If you have a large web application, you can boost it using a PHP accelerator, which caches data and compiled code from the PHP bytecode compiler in shared memory.

What does the INCLUDE statement do in PHP?

The include (or require) statement takes all the text/code/markup that exists in the specified file and copies it into the file that uses the include statement. Including files is very useful when you want to include the same PHP, HTML

Is there a server penalty for including a PHP file?

The includes, obviously, will have a server penalty. But by your question... don't sweat it. Only on really large-scale PHP projects will you face such problems.

How do I include a PHP file in another PHP file?

PHP include and require Statements It is possible to insert the content of one PHP file into another PHP file (before the server executes it), with the include or require statement. The include and require statements are identical, except upon failure: require will produce a fatal error (E_COMPILE_ERROR) and stop the script


2 Answers

Include files are processed on the server, so they're not "fetched" by the browser. The performance difference of using includes vs. copy and pasting the code or consolidating files is so negligible (and I'm guessing we're talking about in the 10 ms to 100 ms range, at the absolute most), that it isn't at all worth it.

Feel free to include and require to your heart's content. Clean code is substantially more important than shaving less than 100 ms off a page load. If you're building something where timing is that critical, you shouldn't be using PHP anyway.

like image 186
David Pfeffer Avatar answered Oct 27 '22 00:10

David Pfeffer


What takes time is figuring out where the files are actually located in the include path. If you got multiple locations in your include path, PHP will search each location until it either finds the file or fails (in which case it throws an error). That's why you should put the include path where most of the included files are to be found on top of the include path.

If you use absolute paths in your include path, PHP will cache the path in the realpath cache, but note that this gets stale very quickly. So yes, including ten files is potentially slower than including one large file, simply because PHP has to check the include path more often. However, unless your webserver is a really weak machine, ten files is not enough to make an impact. This gets only interesting when including hundreds of files or have many locations to search, in which case you should use an OpCode cache anyway.

Also note that when including files, it is not good practice to include each and every file right at the beginning, because you might be including files that are never called by your application for a specific request.


Reference

  • http://de2.php.net/manual/en/ini.core.php#ini.include-path
  • http://de2.php.net/manual/en/ini.core.php#ini.sect.performance
  • http://en.wikipedia.org/wiki/List_of_PHP_accelerators
like image 42
Gordon Avatar answered Oct 26 '22 22:10

Gordon