2009-05-06 25 views
18

Estoy planeando usar MYSQL. ¿Hay una extensión de agrupación de conexiones disponible? ¿O cuál es la práctica normal para la conexión? es éste el que se usa en todas partes ...agrupación de conexiones de php mysql

mysqli_connect("localhost", "xxx", "xxx", "test"); 

qué la gente usa simplemente normal mysql_connect o pconnect ..? ¿Qué tan mejor es pconnect y qué configuración debo hacer para PConnect?

Respuesta

21

¿Alguna vez ha usado mysql_pconnect()? mysql_pconnect() actúa muy parecido a mysql_connect() con dos diferencias principales.

En primer lugar, al conectarse, la función primero intentaría encontrar un enlace (persistente) que ya esté abierto con el mismo host, nombre de usuario y contraseña. Si se encuentra uno, se le devolverá un identificador en lugar de abrir una nueva conexión.

En segundo lugar, la conexión al servidor SQL no se cerrará cuando finalice la ejecución del script. En cambio, el enlace permanecerá abierto para uso futuro (mysql_close() no cerrará los enlaces establecidos por mysql_pconnect()).

Por tanto, este tipo de enlace se llama 'persistente'

Hay que ver here

1

Hay 3 funciones de conexión: los procedimientos de conexión normal, sin puesta en común, no puede ejecutar almacenado:

mysql_connect (solo sql)

mysql_pconnect: conexión agrupada, no se puede ejecutar s procedimientos reada (justo SQL)

mysqli_connect: conexión normal, sin puesta en común, se puede ejecutar procedimientos almacenados (necesita MySQL 5 o superior)

mysqli_pconnect: no existe. No hay se construye en función de conexión tanto en el manejo de procedimientos almacenados y la puesta en común

Mi consejo (a través de la experiencia y el surf):

Si necesita procedimientos almacenados, omita la puesta en común y utilizar mysqli_connect

Si no es necesario procedimientos almacenados, el uso mysql_pconnect

2

Esta es una vieja pregunta, pero quería agregar mi granito de arena, ya que estaba viendo este mismo problema. A partir de PHP 5.3, mysqli admite conexiones persistentes, solo tiene que anteponer p: al principio del nombre de host.

Si está ejecutando Apache, ¿ha intentado buscar en la agrupación de conexiones con mysql a través del módulo apache mod_dbd? Es compatible con la agrupación de conexiones para MySQL.http://httpd.apache.org/docs/2.2/mod/mod_dbd.html

+0

Gracias por señalar el 't:' prefijo de host para las conexiones persistentes requiere ** PHP versión 5.3 **. No he encontrado esa pequeña pepita en ningún otro lado. –

9

de soporte de conexión persistente fue introducido en PHP 5.3 para el mysqli extensión. El soporte ya estaba presente en en PDO MYSQL y ext/mysql. La idea detrás de las conexiones persistentes es que una conexión entre un proceso de cliente y una base de datos puede reutilizarse mediante un proceso de cliente , en lugar de ser creado y destruido varias veces. Esto reduce la sobrecarga de la creación de conexiones nuevas cada vez que se requiere , ya que las conexiones no utilizadas son en caché y están listas para ser reutilizadas.

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

fuente: http://www.php.net/manual/en/mysqli.persistconns.php

sample code: 
$GLOBALS["mysqli"] = new mysqli('p:localhost', 'username', 'password', 'db_name'); 

edición: Lo siento por la víctima, no vio las otras respuestas.

4

utilice la extensión mysqli o PDO en lugar de la antigua extensión mysql.

Se nota que el mysqli_connect o mysqli::__construct desea utilizar una conexión persistente, si el prefijo de su nombre de máquina con 'p:'

http://php.net/manual/en/mysqli.construct.php

Cuestiones relacionadas