Edit report at http://bugs.php.net/bug.php?id=54250&edit=1

 ID:                 54250
 Updated by:         [email protected]
 Reported by:        maciej at wiercinski dot net
 Summary:            date_default_timezone_set stat()'s whole
                     /usr/share/zoneinfo upon first call
-Status:             Open
+Status:             Feedback
 Type:               Bug
 Package:            Date/time related
 Operating System:   Linux 2.6
 PHP Version:        5.3.5
 Block user comment: N
 Private report:     N

 New Comment:

I think this is going to make Derick's head explode :)

This is likely due to the fact that Ubuntu patches PHP to use the system
timezone 

info as opposed to the default bundled data. If you build a clean
version of PHP 

on Ubuntu using the code we actually distribute, I think you will find
that the 

problem goes away.


Previous Comments:
------------------------------------------------------------------------
[2011-03-14 19:11:29] maciej at wiercinski dot net

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 this bug report at http://bugs.php.net/bug.php?id=54250&edit=1

Reply via email to