|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2008-01-16 14:23 UTC] basilio dot vera at softonic dot com
Description:
------------
I can't change the "MYSQLI_OPT_CONNECT_TIMEOUT" flag inside an extended class of mysqli.
This is not really a bug, but a missed feature!
Reproduce code:
---------------
// I want some similar to this:
$mysqli = mysqli_init();
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);
$mysqli->real_connect('localhost', 'my_user', 'my_password', 'world');
// My class that does many magic things.
class mysqli2 extends mysqli
{
public function __construct( $host, $user, $pass, $db )
{
parent::__construct( $host, $user, $pass, $db );
// Too late, the connection has been done before!
$this->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);
}
}
// If I put the options call before the parent::__construct() call I get 'Couldn't fetch DbLink' error.
// And, obviously, this does not work.
class mysqli3 extends mysqli_init {}
Expected result:
----------------
The connect timeout has been changed to 5 seconds.
Actual result:
--------------
The connect timeout has not been changed.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 22 19:00:02 2025 UTC |
Hi, I've found a solution for this problem. It can be solved with: class mysqli2 extends mysqli { public function __construct( $host, $user, $pass, $db ) { $this->init(); $this->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5); $this->real_connect( $host, $user, $pass, $db ); } } But you may consider review your docs, because it's and undocumented feature!For example with an example inside the mysqli_init() or mysqli_options() function docs: class mysqli2 extends mysqli { public function __construct( $host, $user, $pass, $db ) { parent::init(); parent::options( MYSQLI_OPT_CONNECT_TIMEOUT, 5 ); parent::real_connect( $host, $user, $pass, $db ); } } Regards.