require_once() with relative-path in Zend Framework causes so many
require_once() with relative-path in Zend Framework causes so many
am 25.11.2007 14:57:43 von Peter Wang
Hi, all.
I recently encountered a very annoying problem while using Zend
Framework(ZF).
We use ZF in our web application, and it works fine at the
beginning, but later when concurrent requests goes high, we get very
high cpu load. when i trace the httpd using strace, i find so much
fstat64 syscalls, most of which failed, all these syscalls take more
than 60% of cpu usage. After i check our php code carefully, i find
all our require_once() was used with absolute-path, but require_once()
in ZF are all used with relative-path, so while a class in ZF was
used, php will search all directories in include_path, see if the
class file was exists and accessable. but most of them fails, utill
directory of zend framework was reached.
so how to stop php making so many meaningless tries. I guess
modified the zend framework make it do its require_once() with
absolute-path was not feasible.
another approach i guess is: use __autoload() to load classes when
it actually needed. but this also need to modify the Zend Framework.
any better advices? thank you.
Re: require_once() with relative-path in Zend Framework causes so
am 25.11.2007 17:05:47 von colin.mckinnon
On 25 Nov, 13:57, Peter Wang wrote:
> Hi, all.
>
> I recently encountered a very annoying problem while using Zend
> Framework(ZF).
>
> We use ZF in our web application, and it works fine at the
> beginning, but later when concurrent requests goes high, we get very
> high cpu load. when i trace the httpd using strace, i find so much
> fstat64 syscalls, most of which failed, all these syscalls take more
> than 60% of cpu usage. After i check our php code carefully, i find
> all our require_once() was used with absolute-path, but require_once()
> in ZF are all used with relative-path, so while a class in ZF was
> used, php will search all directories in include_path, see if the
> class file was exists and accessable. but most of them fails, utill
> directory of zend framework was reached.
>
> so how to stop php making so many meaningless tries. I guess
> modified the zend framework make it do its require_once() with
> absolute-path was not feasible.
>
> another approach i guess is: use __autoload() to load classes when
> it actually needed. but this also need to modify the Zend Framework.
>
> any better advices? thank you.
If require_once() really is using 60% of your cpu, your PHP code must
be **AMAZINGLY** fast or you've got real problems with your
filesystem. The latter is likely to show up elsewhere (kernel errors,
filesystem errors, hardware errors) so I suspect your analysis is
wrong or incomplete.
Sometimes you've just got to through more hardware at the problem.
C.
Re: require_once() with relative-path in Zend Framework causes somany extra syscall.
am 25.11.2007 17:19:11 von Jerry Stuckle
Peter Wang wrote:
> Hi, all.
>
> I recently encountered a very annoying problem while using Zend
> Framework(ZF).
>
> We use ZF in our web application, and it works fine at the
> beginning, but later when concurrent requests goes high, we get very
> high cpu load. when i trace the httpd using strace, i find so much
> fstat64 syscalls, most of which failed, all these syscalls take more
> than 60% of cpu usage. After i check our php code carefully, i find
> all our require_once() was used with absolute-path, but require_once()
> in ZF are all used with relative-path, so while a class in ZF was
> used, php will search all directories in include_path, see if the
> class file was exists and accessable. but most of them fails, utill
> directory of zend framework was reached.
>
> so how to stop php making so many meaningless tries. I guess
> modified the zend framework make it do its require_once() with
> absolute-path was not feasible.
>
> another approach i guess is: use __autoload() to load classes when
> it actually needed. but this also need to modify the Zend Framework.
>
> any better advices? thank you.
>
How long is your include path, anyway? It's a very good reason not to
use it.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Re: require_once() with relative-path in Zend Framework causes so
am 25.11.2007 19:06:14 von zeldorblat
On Nov 25, 11:19 am, Jerry Stuckle wrote:
> Peter Wang wrote:
> > Hi, all.
>
> > I recently encountered a very annoying problem while using Zend
> > Framework(ZF).
>
> > We use ZF in our web application, and it works fine at the
> > beginning, but later when concurrent requests goes high, we get very
> > high cpu load. when i trace the httpd using strace, i find so much
> > fstat64 syscalls, most of which failed, all these syscalls take more
> > than 60% of cpu usage. After i check our php code carefully, i find
> > all our require_once() was used with absolute-path, but require_once()
> > in ZF are all used with relative-path, so while a class in ZF was
> > used, php will search all directories in include_path, see if the
> > class file was exists and accessable. but most of them fails, utill
> > directory of zend framework was reached.
>
> > so how to stop php making so many meaningless tries. I guess
> > modified the zend framework make it do its require_once() with
> > absolute-path was not feasible.
>
> > another approach i guess is: use __autoload() to load classes when
> > it actually needed. but this also need to modify the Zend Framework.
>
> > any better advices? thank you.
>
> How long is your include path, anyway? It's a very good reason not to
> use it.
>
Very true. It might also help if you put the directory of the Zend
framework at the beginning of the include path so that it's found
immediately.