On Thu, Oct 7, 2010 at 8:09 PM, Scott Nichol <snicholn...@scottnichol.com>wrote:
> In comparing the performance of PHP 5.2.5 file_exists calls versus C stat > calls, I discovered via Windows sysinternals > ProcessMonitor that PHP seems to do a stat on each component of a file > path. For example, > file_exists("e:\\wamp\\www\\ra-v2\\system\\application\\libraries\\MY_Controller.php") > appears to stat "E:\wamp", "E:\wamp\www", > etc., finally getting to the file. That compares to doing _stat64 of > "e:\\wamp\\www\\ra-v2\\system\\application\\libraries\\MY_Controller.php" > in C, which just does the stat on the file. The timings > from my tests show the C app finishing in about one-seventh the time, which > is what I would expect from the PHP code doing seven > times as many stat calls. > > Assuming my inference about all the stat calls is correct, is there a > rationale for this? If the PHP app I am working on made just > a couple of file_exists calls, I would not bother to ask, but it uses the > CodeIgniter framework which is doing >100 file_exists > calls for each page being accessed, so the affect is very noticeable. > > FYI, I poked around the PHP SVN web interface for a while and found > php_check_open_basedir_ex called in plain_wrapper.c, which I > suspect causes the calls, but ran out of steam before confirming the cause > of the behavior. > > TIA > -- > Scott Nichol > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > Hi. This was discussed before. see http://www.mail-archive.com/internals@lists.php.net/msg37211.html Tyrael