# pconnect()?



## mosx86 (Jan 20, 2009)

PHP question...

I've inherited a MAMP (mac/apache/mysql/php) on which PHP is configured to allow persistent connections.

If there are scripts using pconnect() and I disable persistent connections in the php.ini file will this break them?  Or should I limit the number of allowed pconnects?  Currently the system is unlimited.


----------



## kfiore (Feb 9, 2009)

"If there are scripts using pconnect() and I disable persistent connections in the php.ini file will this break them?"

Most likely - you are disconnecting the MySQL connection.


BTW - Here's a recap of important reasons NOT to use persistent connections:

* When you lock a table, normally it is unlocked when the connection closes, but since persistent connections do not close, any tables you accidentally leave locked will remain locked, and the only way to unlock them is to wait for the connection to timeout or kill the process. The same locking problem occurs with transactions. (See comments below on 23-Apr-2002 & 12-Jul-2003)

* Normally temporary tables are dropped when the connection closes, but since persistent connections do not close, temporary tables aren't so temporary. If you do not explicitly drop temporary tables when you are done, that table will already exist for a new client reusing the same connection. The same problem occurs with setting session variables. (See comments below on 19-Nov-2004 & 07-Aug-2006)

* If PHP and MySQL are on the same server or local network, the connection time may be negligible, in which case there is no advantage to persistent connections.

* Apache does not work well with persistent connections. When it receives a request from a new client, instead of using one of the available children which already has a persistent connection open, it tends to spawn a new child, which must then open a new database connection. This causes excess processes which are just sleeping, wasting resources, and causing errors when you reach your maximum connections, plus it defeats any benefit of persistent connections. (See comments below on 03-Feb-2004, and the footnote at http://devzone.zend.com/node/view/id/686#fn1)


In general use mysql_connect() for connecting to MySQL unless that connection takes a long time to establish.


Description
resource mysql_connect ([ string $server=ini_get("mysql.default_host") [, string $username=ini_get("mysql.default_user") [, string $password=ini_get("mysql.default_password") [, bool $new_link=false [, int $client_flags=0 ]]]]] )

Opens or reuses a connection to a MySQL server.


----------

