To what versions of PHP do you plan to include your realpath cache ?
I hope you'll add it to PHP4...
Thanks
Jean-Francois
-----Message d'origine-----
De : Andi Gutmans [mailto:andi@zend.com]
Envoyé : dimanche 9 mai 2004 18:09
À : Masaki Fujimoto; internals@lists.php.net
Objet : Re: [PHP-DEV] [PATCH] suppressingrealpath()
with APC + tiny
patches
Hi Masaki,
I would like to fix this using a
realpath()
cache. I plan on
working on
this in the next few weeks and this will hopefully solve the problem
everywhere in PHP and be pretty much transparent.
Andi
At 10:36 PM 5/6/2004 +0900, Masaki Fujimoto wrote:
Hello,
These days I've been working on some tasks to reduce I/O system calls
(lstat64, stat64, open and so on) of PHP for some reasons and
as the result of it, I noticed that with the APC + very small two
pathes we can suppress most ofrealpath()
calls (although currently
I'm not sure this is the correct method or not...):http://eth.jp/php-cvs-20040506-delayed-fopen.patch.txt
(patch against current 4.3 tree, because APC is not yet fully
compatible with PHP 5)
http://eth.jp/apc-2.0.3-delayed-fopen.patch.txt
(patch against APC-2.0.3, current CVS-HEAD is somehow unstable...)So please try and review if you're curious about suppressing
realpath() calls:)Usage:
- apply patches to current 4.3 tree, and APC-2.0.3
- buidconf and configure PHP as always with --enable-delayed-fopen
option- build and install PHP and APC as always
- add "delayed_fopen=1" entry to your php.ini
And details are as follows:
As the recent thread and some other threads show (which
listed below),
PHP requires quite a few I/O system calls especially when
large number
of scripts are include_once()ed. And these are not ignorable
for the websites with more than 1 million hits per hour although it
has nothing to do with small sites.[Performance Consideration of 1 class per file]
http://marc.theaimsgroup.com/?l=php-dev&m=108279256414391&w=2[Performance degradation]
http://www.phpbuilder.com/lists/php-developer-list/2003022/0226.phpThe main concern here is the lstat64() by
realpath()
, and open() by
searching for include_paths (when many include_paths are set).I think suppressing open() (which will result in ENOENT) is not so
easy (because we need some other new caching system for
include_paths), but perhaps we can easily reducerealpath()
for
included scritpts with APC, because APC does not use an opned file
handle when cache hits.So, my patch skips zend_open() until open_file_scanning() is called
inside zend_compile_file() when include_once() or require_once() is
called, so that zend_open() is not called when the target script is
cached in APC. As a result of this, we can reduce most ofrealpath()
calls by include_once() and required_once().These patches are not yet verified well so comments are welcome!
Best regards,
Masaki Fujimoto
fujimoto@php.net--
--
Le present message (y compris tous les elements attaches) est confidentiel et est destine a ses seuls destinataires. Si vous
l'avez recu par erreur, merci de l'indiquer a son expediteur par retour et de proceder a sa destruction dans vos systemes.
Toute utilisation ou diffusion non autorisee de son contenu, en totalite ou en partie, est strictement interdite. Les idees et
opinions presentees dans ce message sont celles de son auteur, et ne representent pas necessairement celles de TF1 (et/ou des
entites membres du Groupe TF1).
This message (including any attachments) is confidential and may be privileged. If you have received it by mistake please notify
the sender by return email and delete this message from your system. Any unauthorised use or dissemination of this message in
whole or in part is strictly prohibited. Any views or opinions presented are solely those of its author and do not necessarily
represent those of TF1 (and/or its group companies).
To what versions of PHP do you plan to include your realpath cache ?
I hope you'll add it to PHP4...
PHP 4 will not get new features.
Derick