ID:               47629
 Updated by:       dani...@php.net
 Reported By:      danielc at analysisandsolutions dot com
-Status:           Bogus
+Status:           Feedback
 Bug Type:         MySQLi related
 Operating System: Windows XP SP3
 PHP Version:      5.3CVS-2009-03-12 (snap)
-Assigned To:      
+Assigned To:      pajoye
 New Comment:

Yes, the execution timeout makes sense some ways.  The problem is the
behavior is inconsistent between 5.2 and 5.3 and between other
connection functions.


Previous Comments:
------------------------------------------------------------------------

[2009-06-20 13:19:04] paj...@php.net

With:

max_execution_time: 2
default_socket_timeout: 6


It is the expected behavior to have a fatal error about the maximum
execution time being exceeded. max_execution_time has the highest
importance.

------------------------------------------------------------------------

[2009-03-12 04:41:21] danielc at analysisandsolutions dot com

Description:
------------
A fatal error is generated if a MySQLi connection attempt times out AND
the default_socket_timeout ini setting is greater that the
max_execution_time ini setting.  This is happening in PHP 5.3, Mar 11
2009 17:04:24, VC6 thread safe snapshot build.

This does not happen on timeouts when using socket_bind().

This does not happen in PHP 5.2.9-1.

Reproduce code:
---------------
// BOGUS MYSQL PORT NUMBER IS INTENTIONAL.

echo 'PHP ' . phpversion() . "\n\n";

echo "ONE ---------------\n";

ini_set('max_execution_time', 6);
ini_set('default_socket_timeout', 2);

echo 'max_execution_time: ' . ini_get('max_execution_time') . "\n";
echo 'default_socket_timeout: ' . ini_get('default_socket_timeout') .
"\n";

$mysqli = new mysqli('localhost', 'does', 'not', 'matter', 1);
if ($mysqli->connect_error) {
    echo "GOOD CATCH\n\n";
}


echo "TWO ---------------\n";

ini_set('max_execution_time', 2);
ini_set('default_socket_timeout', 6);

echo 'max_execution_time: ' . ini_get('max_execution_time') . "\n";
echo 'default_socket_timeout: ' . ini_get('default_socket_timeout') .
"\n";

$mysqli = new mysqli('localhost', 'does', 'not', 'matter', 1);
if ($mysqli->connect_error) {
    echo "GOOD CATCH\n\n";
}


Expected result:
----------------
PHP 5.3.0beta2-dev

ONE ---------------
max_execution_time: 6
default_socket_timeout: 2

Warning:  mysqli::mysqli() [mysqli.mysqli]: [2002] A connection attempt
failed because the connected party did not  (trying to connect via
tcp://localhost:1) in ...

Warning:  mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): A connection
attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond. in ...

GOOD CATCH

TWO ---------------
max_execution_time: 2
default_socket_timeout: 6

Warning:  mysqli::mysqli() [mysqli.mysqli]: [2002] A connection attempt
failed because the connected party did not  (trying to connect via
tcp://localhost:1) in ...

Warning:  mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): A connection
attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond. in ...

GOOD CATCH


Actual result:
--------------
PHP 5.3.0beta2-dev

ONE ---------------
max_execution_time: 6
default_socket_timeout: 2

Warning:  mysqli::mysqli() [mysqli.mysqli]: [2002] A connection attempt
failed because the connected party did not  (trying to connect via
tcp://localhost:1) in ...

Warning:  mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): A connection
attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond. in ...

GOOD CATCH

TWO ---------------
max_execution_time: 2
default_socket_timeout: 6

Warning:  mysqli::mysqli() [mysqli.mysqli]: [2002] A connection attempt
failed because the connected party did not  (trying to connect via
tcp://localhost:1) in ...

Warning:  mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): A connection
attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond. in ...

Fatal error:  Maximum execution time of 2 seconds exceeded in ...



------------------------------------------------------------------------


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

Reply via email to