Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:9783 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 12551 invoked by uid 1010); 10 May 2004 07:58:13 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 12521 invoked from network); 10 May 2004 07:58:13 -0000 Received: from unknown (HELO tfmelsw2.tf1.groupetf1.fr) (83.145.64.84) by pb1.pair.com with SMTP; 10 May 2004 07:58:13 -0000 Received: from MSGEXS11.tf1.groupetf1.fr ([10.210.35.61]) by TFEXFSW1.tf1.groupetf1.fr with Microsoft SMTPSVC(6.0.3790.0); Mon, 10 May 2004 09:58:08 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.0.6375.0 content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Date: Mon, 10 May 2004 09:58:07 +0200 Message-ID: <30884B45CCC6714B800F6F294BEC0A990261B759@MSGEXS11.tf1.groupetf1.fr> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PHP-DEV] [PATCH] suppressing realpath() with APC + tiny patches Thread-Index: AcQ13+68le+ZYONoQ5SYrTAiWuuAuAAg763g To: "Andi Gutmans" , "Masaki Fujimoto" , X-OriginalArrivalTime: 10 May 2004 07:58:08.0394 (UTC) FILETIME=[884306A0:01C43664] Subject: RE: [PHP-DEV] [PATCH] suppressing realpath() with APC + tiny patches From: JFBUSTARRET@tf1.fr ("BUSTARRET, Jean-Francois") 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=E9 : dimanche 9 mai 2004 18:09 > =C0 : Masaki Fujimoto; internals@lists.php.net > Objet : Re: [PHP-DEV] [PATCH] suppressing realpath() with APC + tiny > patches >=0D >=0D > Hi Masaki, >=0D > I would like to fix this using a realpath() cache. I plan on=0D > working on=0D > this in the next few weeks and this will hopefully solve the problem=0D > everywhere in PHP and be pretty much transparent. >=0D > Andi >=0D > 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 of realpath() 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: > >1) apply patches to current 4.3 tree, and APC-2.0.3 > >2) buidconf and configure PHP as always with --enable-delayed-fopen > > option > >3) build and install PHP and APC as always > >4) add "delayed_fopen=3D1" entry to your php.ini > > > > > >And details are as follows: > > > >As the recent thread and some other threads show (which=0D > listed below), > >PHP requires quite a few I/O system calls especially when=0D > 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=3Dphp-dev&m=3D108279256414391&w=3D2 > > > >[Performance degradation] > >http://www.phpbuilder.com/lists/php-developer-list/2003022/0226.php > > > >The 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 reduce realpath() 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 of realpath() > >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 > > > > > >-- > >PHP Internals - PHP Runtime Development Mailing List > >To unsubscribe, visit: http://www.php.net/unsub.php >=0D > --=0D > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php >=0D >=0D ------------------------------------- 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.=0D Toute utilisation ou diffusion non autorisee de son contenu, en totalite ou= en partie, est strictement interdite. Les idees et=0D opinions presentees dans ce message sont celles de son auteur, et ne= representent pas necessairement celles de TF1 (et/ou des=0D 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=0D the sender by return email and delete this message from your system. Any= unauthorised use or dissemination of this message in=0D whole or in part is strictly prohibited. Any views or opinions presented= are solely those of its author and do not necessarily=0D represent those of TF1 (and/or its group companies).