|
Posted by C. (http://symcbean.blogspot.com/) on 11/25/07 16:05
On 25 Nov, 13:57, Peter Wang <ptr.w...@gmail.com> 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.
[Back to original message]
|