2010-08-13 37 views
10

En pocas palabras, ¿hay algún tipo de mysqli_pconnect de gran utilización PHP & MySQL servidores, o necesito seguir con mysql no mejorado? Y si es así, ¿por qué lo eliminaron?mysqli conexión persistente

Respuesta

15

El soporte para esto se introdujo en PHP 5.3. Para versiones anteriores, PDO y, Dios no lo quiera, la extensión mysql son las únicas opciones.

citar el manual:

A diferencia de la extensión mysql, mysqli no proporciona una función separada para la apertura de las conexiones persistentes. Para abrir una conexión persistente, debe anteponer p: al nombre de host al conectarse.

+0

Entonces, para pre 5.3, ¿qué es un truco o una solución alternativa? – Pacerier

8

No me molesto con las conexiones persistentes en MySQL. Las conexiones persistentes son para bases de datos como Oracle, en las que hacer una nueva conexión es mucho más lenta.

En MySQL, establecer una conexión es relativamente rápido (especialmente si desactiva las búsquedas DNS inversas). No debería haber necesidad de conexiones persistentes con MySQL. Si su aplicación es crítica para el rendimiento, hay muchas cosas que puede hacer con mayor rendimiento por su dinero que preocuparse por las conexiones persistentes.

Además, las conexiones persistentes vienen con efectos secundarios no deseados. Si usa variables de MySQL, tablas temporales, cambia el conjunto de caracteres de una conexión u olvida finalizar las transacciones, podría causar problemas. Por ejemplo, podría exponer los datos privados de un usuario a la sesión PHP de otro usuario porque deja una tabla temporal activa.

+0

Lea la página del manual a la que he vinculado. Hay operaciones de limpieza después de cada solicitud de PHP. Pero sí, la mayoría de las veces el uso de conexiones persistentes no valdrá la pena. – Artefacto

+0

Gracias, eso es tranquilizador. –

4

Actualmente hay persistent support para la biblioteca mysqli. Simplemente anteponga "p:" al nombre de host y listo.

+0

¿cómo prefieres "p:" al nombre de host? ejemplo: \t \t \t $ this-> mysqli = new mysqli (mysql_host, mysql_user, mysql_password, mysql_database); –

+4

@JavaNewb: perdón por resucitar un hilo antiguo, pero dejamos una pregunta sin respuesta. Yo "antepongo p:" con concatenación de cadenas. Ejemplo: $ this-> mysqli = new mysqli ('p:'. Mysql_host, mysql_user, mysql_password, mysql_database); –

+0

Esta es una solución perfectamente buena. ¡Funcionó muy bien para mí! – zmonteca