Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:11484 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 34665 invoked by uid 1010); 22 Jul 2004 21:30:12 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 34519 invoked from network); 22 Jul 2004 21:30:10 -0000 Received: from unknown (HELO mail.zend.com) (80.74.107.235) by pb1.pair.com with SMTP; 22 Jul 2004 21:30:10 -0000 Received: (qmail 10455 invoked from network); 22 Jul 2004 21:30:07 -0000 Received: from localhost (HELO AndiNotebook.zend.com) (127.0.0.1) by localhost with SMTP; 22 Jul 2004 21:30:07 -0000 Message-ID: <5.1.0.14.2.20040722142558.041b3e10@127.0.0.1> X-Sender: andi@127.0.0.1 X-Mailer: QUALCOMM Windows Eudora Version 5.1 Date: Thu, 22 Jul 2004 14:30:00 -0700 To: internals@lists.php.net Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====================_69498092==_" Subject: realpath() caching From: andi@zend.com (Andi Gutmans) --=====================_69498092==_ Content-Type: text/plain; charset="us-ascii"; format=flowed Hi guys, Before 5.0.0 we promised we'll get something together for solving the performance problems caused by Zend always realpath()'ing include files (in expand_filepath()). Attached is a proposed implementation of such a cache. We tried to make it as simple as possible and tests shows that it solves the performance problems. A few facts about it: a) Expiration and Cache size are still hardcoded and not INI options in tsrm_virtual_cwd.h. Didn't want to go through the trouble of doing it because we agree on the implementation. b) tsrm_hash.* is a full blown hash and not a stripped down hash which is all that's needed for this. It'll be stripped down. c) In my opinion and tests, having a memory limit on the cache works great because it makes sure the cache doesn't go crazy and even in like 16K of memory you can usually cache all of the realpath()'s. d) Current expiration for an entry is 2 minutes which is also plenty. e) I wouldn't make it much more complicated or "smarter" than this because it'll just add lots of code and will probably not perform much better. Comments welcome. Let's get this baby into PHP 5.1! Andi --=====================_69498092==_--