note 16496 added to function.mysql-pconnect
| From: | kenn at dictionaryof dot com | Date: | Fri, 02 Nov 2001 00:14:41 +0000 |
| Subject: | note 16496 added to function.mysql-pconnect | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-20027@lists.php.net to get a copy of this message | ||
This is gonna be a little long...
I just setup mysql master/slave replication and its very cool; except that pconnect does have an
issue that caused me a lot of very interesting problems today.
Here is the situation, and oddly enough, a simple solution:
If you have:
######################################################
$DB_hostname = "writeDB.here.com";
function MY_QUERY ($database, $query) {
global $DB_hostname, $DB_username, $DB_password, $DB_name;
## here's the conditional!!!
## if we're "selecting", use the "read" (slave) server
if (substr($query, 0, 6) == "SELECT") {
$DB_hostname = "readDB.here.com";
}
MYSQL_PCONNECT ($DB_hostname, $DB_username, $DB_password) OR DIE("unable to connect");
@mysql_select_db ($database) or die ("Unable to select database - $database");
$result = MYSQL_QUERY ($query);
return ($result);
}
######################################################
if the conditional to reset $DB_hostname is TRUE and the new hostname is set and then used in the
Pconnect, statement, $DB_hostname is permanantly set within that HTTPD child to
"readDB.here.com". It will never return to the globally defined value ever again
"writeDB.here.com".
So, just to try it, I added:
$DB_hostname = "writeDB.here.com";
just before the return(); statement at the end of the function and the problem goes away.
never seen anything like that before. :-) PHP certainly doesn't act that way with other
variables in other functions.
I did not take the time to test this with mysql_connect. Regarding the existing debate, aside from
this issue, my experience has shown that pconnect is far better. *shrug*
FYI, we're doing about 65 queries per second on average (which I now have setup between
master/slave DB servers); I have my max connections on MySQL set @ 500.
--
http://www.php.net/manual/en/function.mysql-pconnect.php
http://master.php.net/manage/user-notes.php?action=edit+16496
http://master.php.net/manage/user-notes.php?action=delete+16496
http://master.php.net/manage/user-notes.php?action=reject+16496