|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-10-13 17:41 UTC] majkl578 at gmail dot com
Description: ------------ PHP ignores the max_execution_time set in php.ini and sets (somehow internally) it to the value of max_input_time. ini_get returns correct values of both of these settings, but the script is halted after the time set as max_input_time. This bug affects PHP5.3RC1 and also the latest snapshot of PHP5.3. It is probably similar to an old bug #37306. Related php.ini values: max_execution_time = 5 max_input_time = 10 Configure command: ./configure --prefix=/usr --sysconfdir=/etc --cache-file=./config.cache --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php/extensions --with-apxs2=/usr/bin/apxs2 --with-mysql --with-mysqli --with-curl --with-sqlite --enable-sqlite-utf8 --with-gd --enable-mbstring --with-openssl --disable-short-tags --with-mcrypt --with-bz2 --with-zlib --enable-zip --with-xmlrpc --enable-soap --without-mssql --with-pgsql --with-tidy --enable-debug --disable-posix --enable-exif --enable-ftp --with-gettext --with-mhash --enable-pcntl --with-pspell --enable-sockets --with-xsl --enable-cli --enable-calendar --disable-cgi --enable-zend-multibyte Reproduce code: --------------- <?php echo ini_get('max_execution_time'), ' | ', ini_get('max_input_time'); while(true); Expected result: ---------------- 5 | 10 Fatal error: Maximum execution time of 5 seconds exceeded in /foo/bar.php on line 4 Actual result: -------------- 5 | 10 Fatal error: Maximum execution time of 10 seconds exceeded in /foo/bar.php on line 4 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 06:00:01 2025 UTC |
The idea behind the code is that during request startup before we hit the zend_execute_scripts() call, the timeout is set to max_input_time if it is defined. max_input_time will be -1 if it has not been defined. Then just before zend_execute_scripts() we have: if (PG(max_input_time) != -1) { #ifdef PHP_WIN32 zend_unset_timeout(TSRMLS_C); #endif zend_set_timeout(INI_INT("max_execution_time")); } So when script execution starts we are using the max_execution_time value. I'll have to follow the logic through a bit more closely. I must have missed something somewhere, but that is the idea behind the code.