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
