On Wed, 2008-07-16 at 06:45 -0700, Rasmus Lerdorf wrote:

> Arvids Godjuks wrote:
> > Hello.
> >
> > I think this should be optimized.
> > I'm not an expert ofcourse, but as I understood there is only one case
> > witch need a special treatment - require/include _one when a file with
> > equal contents is included from different directories.
> > You can make a switch witch controls if lstat is made or not in these
> > cases. People who know what they are doing will switch it to off and
> > make sure their includes don't result in Fatal error (anyway, to my
> > opinion it is bad desing if such thing happens).
> > Ofcourse open_basedir users will don't have any benefit from it, but
> > that's their choise.
> > So I think you should think it out and make this optimization to 5.3
> > release. It would be great optimization, IMHO.
> 
> But all these lstats should be getting cached, so I don't see how it 
> would affect performance very much.  If you are blowing your realpath 
> cache, you need to take a look at why that is happening.
> 
> We probably should disconnect clearstatcache() from the realpath_cache, 
> and we could perhaps look at doing partial path caches through our own 
> realpath implementation.  The other thing that can suck is when you have 
> an include_path miss.  We don't cache misses like this, so if you are 
> relying on include_path to find your files and you don't hit it on the 
> first try, you are going to see a bunch of stats.  But that is again 
> something that is easily fixed by not writing crappy code.
> 
> I think that breaking code that looks like this:
> 
> require_once './a.inc';
> require_once 'a.inc';
> require_once '../a.inc';
> require_once 'includes/a.inc';
> 
> when these all refer to the same a.inc file depending on where the 
> parent file is and what the coder had for breakfast that morning would 
> be a very bad idea.
> 
> -Rasmus
> 


Since the realpath cache is only relevant for a single request(right?),
removing these lstats
 calls will a major benefit.

Before moving our portal dir to the /  dir, ~40% of our page requests
were slow on the server side (I'm not sure if my company policies allow
me to expose exactly what is considered slow),
after moving it ~20% of the page requests were slow! this is
significant.
And there are still many lstat calls made inside our portal's directory
tree.

So I think that a  php.ini directive for switching off these lstats
which will be off by default,
will be a great thing.

-Amir.

Reply via email to