#43866 [Bgs]: Can't define the connect timeout on mysqli extension class
| From: | danielc@php.net | Date: | Fri, 13 Mar 2009 22:54:05 +0000 |
| Subject: | #43866 [Bgs]: Can't define the connect timeout on mysqli extension class | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-134685@lists.php.net to get a copy of this message | ||
ID: 43866
Updated by: danielc@php.net
Reported By: basilio dot vera at softonic dot com
Status: Bogus
Bug Type: MySQLi related
Operating System: Linux RHEL4
PHP Version: 5.2.5
New Comment:
Examples added to manual.
Previous Comments:
------------------------------------------------------------------------
[2008-01-17 18:35:52] uw@php.net
Not a bug, solution is given, documentation "flaw" discussed.
------------------------------------------------------------------------
[2008-01-17 17:54:44] basilio dot vera at softonic dot com
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.
------------------------------------------------------------------------
[2008-01-17 17:29:50] uw@php.net
Give me a hint, what's up with the documentation?
http://us2.php.net/mysqli_connect shows that calling
constructor of the
mysqli class is equal to calling mysqli_connect(). As you know, you need
to call mysqli_options() before a connection has been established. In
your reproduceable code you suggest a derived class which explicitly
calls the parent constructor to create a connection. Once the parent
constructor has been called you try to call mysqli_options()
(mysqli::options()). That's too late.
Your second example gets it right. How could we improve the
documentation? Thanks!
Ulf
------------------------------------------------------------------------
[2008-01-17 00:19:51] basilio dot vera at softonic dot com
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!
------------------------------------------------------------------------
[2008-01-16 14:34:39] basilio dot vera at softonic dot com
Sorry, the error message was:
'Couldn't fetch mysqli2'
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/43866
--
Edit this bug report at http://bugs.php.net/?id=43866&edit=1