php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #44505 include_once behavior when including UNC file
Submitted: 2008-03-22 17:53 UTC Modified: 2008-08-06 01:00 UTC
Votes:19
Avg. Score:4.9 ± 0.4
Reproduced:19 of 19 (100.0%)
Same Version:16 (84.2%)
Same OS:19 (100.0%)
From: lmeyer at ea dot com Assigned: dmitry (profile)
Status: No Feedback Package: Performance problem
PHP Version: 5.2CVS-2008-03-25 OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: lmeyer at ea dot com
New email:
PHP Version: OS:

 

 [2008-03-22 17:53 UTC] lmeyer at ea dot com
Description:
------------
When using include_once with an abolute UNC file path, it is really slow using php 5.2.5, php 5.2.4, and really fast using php 5.2.3

From the script below :
PHP 5.2.5 :
first include_once : //NAS/nas/www/adodb5/adodb.inc.php
time (ms): 0.068962097167969
include_once count in 5 sec: 240   <<<<<<<<<<

PHP 5.2.3 :
first include_once : //NAS/nas/www/adodb5/adodb.inc.php
time (ms): 0.030542135238647
include_once count in 5 sec: 376054 <<<<<<<<<<

Thanks !
Lo.





Reproduce code:
---------------
<?php
// CASE MATTER !!!!
$absolutepath = '//NAS/nas/www/adodb5/adodb.inc.php';
$durationsec = 5.0;
///////////////////////////////////////////////////////////////////////////////
function sys_sinternal_microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
$t = sys_sinternal_microtime_float();
include_once('//NAS/nas/www/ea-land/private/prod/libs/adodb5/adodb.inc.php');
$t = sys_sinternal_microtime_float() - $t;
echo 'first include_once : '.$absolutepath.'<br>';
echo 'time (ms): '.$t.'<br>';

$cnt  = 0;
$t = sys_sinternal_microtime_float();
while(sys_sinternal_microtime_float() - $t < $durationsec)
{
	$cnt++;
	include_once('//NAS/nas/www/ea-land/private/prod/libs/adodb5/adodb.inc.php');
}
echo 'include_once count in '.$durationsec.' sec: '.$cnt;
echo '<br>';
?>

Expected result:
----------------
"Include_once" should include_once should only include a file once whitout doing extra processing as long as the file has an absolute path.

Actual result:
--------------
It's wotking well with php 5.2.3, but not anymore from php 5.2.4.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2008-03-23 12:06 UTC] felipe@php.net
Maybe, related to bug#44125
 [2008-03-24 22:26 UTC] lmeyer at ea dot com
Adding some results using php 5.2.3 and 5.2.5 :

WIN PATH : //NAS/nas/www/adodb5/adodb.inc.php
LNX PATH : \\\\NAS\\nas\\www\\adodb5\\adodb.inc.php
REALPATH : using realpath as suggested in bug#44125

                              WIN PATH  LNX PATH  WIN PATH   LNX PATH
                                                  REALPATH   REALPATH
PHP 5.2.3
FIRST INCLUDE ONCE (sec)      0.05	0.02      0.07       0.06
5sec. INCLUDE_ONCE (count)    250       338488    232        332800

PHP 5.2.5
FIRST INCLUDE ONCE (sec)      0.08      0.07      0.06       0.14
5sec. INCLUDE_ONCE (count)    215       228       310427     298643
 [2008-03-25 21:38 UTC] lmeyer at ea dot com
WIN PATH : //NAS/nas/www/adodb5/adodb.inc.php
LNX PATH : \\\\NAS\\nas\\www\\adodb5\\adodb.inc.php
REALPATH : using realpath as suggested in bug#44125

                              WIN PATH  LNX PATH  WIN PATH   LNX PATH
                                                  REALPATH   REALPATH
PHP 5.2 Dev Snap
200803252030
 
FIRST INCLUDE ONCE (sec)      0.04	0.05      0.05       0.06
5sec. INCLUDE_ONCE (count)    295358    152       288045     282244

It's way better :), but still the problem remains for linux style path without realpath.
 [2008-04-02 19:05 UTC] mh at nextra dot ch
Same here. 

Including a file with full path spec (i.e. k:\www\testserver.com\docs\inc.php) is the fastest here:
include_once count in 5 sec: 1356

Simply including the same file witout giving the full path spec is extremly slow:
include_once count in 5 sec: 170
 [2008-04-03 10:36 UTC] mh at nextra dot ch
It's still there in 5.3.0-dev.
 [2008-07-21 12:10 UTC] pajoye@php.net
Switch to not OS specific.

Dmitry, can you take a look?
 [2008-07-29 09:46 UTC] dmitry@php.net
I don't see any performance difference with PHP_5_2 and PHP_5_3 CVS versions. I also looked into filesystem calls with sysinternals FileMon and didn't see any difference. Probably this issue is already fixed.

 [2008-08-06 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Apr 23 06:01:30 2024 UTC