From:             
Operating system: Linux 2.6
PHP version:      5.3.5
Package:          Date/time related
Bug Type:         Bug
Bug description:date_default_timezone_set stat()'s whole /usr/share/zoneinfo 
upon first call

Description:
------------
Upon first call to date_default_timezone_set, PHP syscalls stat() on all
the 

files in /usr/share/zoneinfo. 



It can be easily checked by running: 



$ strace -s 100 -r php -n -r"date_default_timezone_set('GMT');" 2>&1 | grep


zoneinfo



On average Debian/Ubuntu system it accounts for little over 600 syscalls.



Reproduced on: 



PHP 5.3.5-1 with Suhosin-Patch (cli) (built: Feb 19 2011 01:57:59) 

Copyright (c) 1997-2009 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

    with Suhosin v0.9.29, Copyright (c) 2007, by SektionEins GmbH



PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug  4 2010 

03:25:57) 

Copyright (c) 1997-2008 The PHP Group

Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

    with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans



PHP 5.3.2-1ubuntu4.7 with Suhosin-Patch (cli) (built: Jan 12 2011 18:36:08)


Copyright (c) 1997-2009 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans



*Not* reproduced on: 



PHP 5.3.3-0.dotdeb.1 with Suhosin-Patch (cli) (built: Oct  1 2010 08:49:29)


Copyright (c) 1997-2009 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH







Test script:
---------------
$ strace -s 100 -r php -n -r"date_default_timezone_set('GMT');" 2>&1 | grep
zoneinfo | head -10

     0.000190 open("/usr/share/zoneinfo/",
O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3

     0.000046 stat64("/usr/share/zoneinfo//localtime",
{st_mode=S_IFREG|0644, st_size=3661, ...}) = 0

     0.000112 stat64("/usr/share/zoneinfo//Zulu", {st_mode=S_IFREG|0644,
st_size=118, ...}) = 0

     0.000101 stat64("/usr/share/zoneinfo//WET", {st_mode=S_IFREG|0644,
st_size=1873, ...}) = 0

     0.000100 stat64("/usr/share/zoneinfo//W-SU", {st_mode=S_IFREG|0644,
st_size=2194, ...}) = 0

     0.000098 stat64("/usr/share/zoneinfo//Universal",
{st_mode=S_IFREG|0644, st_size=118, ...}) = 0

     0.000101 stat64("/usr/share/zoneinfo//UTC", {st_mode=S_IFREG|0644,
st_size=118, ...}) = 0

     0.000099 stat64("/usr/share/zoneinfo//US", {st_mode=S_IFDIR|0755,
st_size=352, ...}) = 0

     0.000097 stat64("/usr/share/zoneinfo//UCT", {st_mode=S_IFREG|0644,
st_size=118, ...}) = 0

     0.000099 stat64("/usr/share/zoneinfo//Turkey", {st_mode=S_IFREG|0644,
st_size=2721, ...}) = 0



$ strace -s 100 -r php -n -r"date_default_timezone_set('GMT');" 2>&1 | grep
zoneinfo | wc -l

626








-- 
Edit bug report at http://bugs.php.net/bug.php?id=54250&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=54250&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=54250&r=trysnapshot53
Try a snapshot (trunk):              
http://bugs.php.net/fix.php?id=54250&r=trysnapshottrunk
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=54250&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=54250&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=54250&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=54250&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=54250&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=54250&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=54250&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=54250&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=54250&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=54250&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=54250&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=54250&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=54250&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=54250&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=54250&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=54250&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=54250&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=54250&r=mysqlcfg

Reply via email to