Arvids Godjuks wrote:
Yesterday I made some tests on my site with strace to see how much lstat
I have and how can I optimize them. Well, I managed to get rid of them
almost at all, but now I have some questions about include_path and
including files based on current dir.

I have such structire of files

/home/file/www (that's my site root dir)

include/
- bittorrent
- global.php

lang/
- eng.lang
- rus.lang

index.php


My files are
---- index.php ---
require './include/bittorrent.php';

--- common.php ---
require './include/global.php';
require './lang/eng.lang';
And some other files from include dir

Default include path is ".:/usr/share/php5:/usr/share/php" and if I
don't change it it results in a bunch of lstat. Here is the trace
http://pastebin.com/m37704b6a

The thing I don't understand from trace is WHY it tests include path
BEFORE the ./ ? Why it doesn't try to load file based on relative path
first (it should hit it on first try) and then use include path?
Ok, I make in bittorrent.php - set_include_path('/home/file/www');

The only lstat i have now is

lstat("/home", {st_mode=S_IFDIR|0755, st_size=144, ...}) = 0
lstat("/home/file", {st_mode=S_IFDIR|0755, st_size=1112, ...}) = 0
lstat("/home/file/www", {st_mode=S_IFDIR|0755, st_size=11880, ...}) = 0
lstat("/home/file/www/bittorrent.php", 0x7fff8d95cca0) = -1 ENOENT (No
such file or directory)
open("/home/file/www/bittorrent.php", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/home/file/www/include/bittorrent.php", O_RDONLY) = 14

So the question is - why are they happen at all, if I include
bittorrent.php as require './include/bittorrent.php' in index.php. As i
understand it should hit the right folder from first time. Could you,
please, explain how all this works, because as it turned out it is not
so obvious as it should be...

I have PHP 5.2.6 (Gentoo Linux package name is dev-php5/php-5.2.6-r2)
and lighttpd 1.5

You missed something. You have an include 'bittorrent.php' in there somewhere. This thread would really be more appropriate on php-users at this point.

-Rasmus

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to