2009-08-27 10 views
10

Soy un principiante de PHP que trabaja algunos scripts para exhibir algunos artículos de noticias de un databse y quisiera encontrar un par de cosas.Cuál es mejor: mysql_connect o mysql_pconnect

  • Para abrir una conexión a una base de datos MySQL, que es una mejor opción mysql_connect o mysql_pconnect?
  • ¿Cuáles son las ventajas o inconvenientes de utilizar una conexión persistente a la base de datos?
  • ¿Y en qué tipo de escenario se requerirá una conexión persistente?
+2

Duplicado de http://stackoverflow.com/questions/247807/mysqlconnect-vs-mysqlpconnect – Oskar

Respuesta

19

Si va a escribir una página web, no hay necesidad de una conexión persistente. Toma demasiados recursos. Usa mysql_connect. Minimice el tiempo que su conexión de db está abierta y no se usa tanto como pueda. Abre, trae lo que quieras, cierra. No necesita permanecer abierto mientras los usuarios solo están leyendo. La conexión se utiliza con el tiempo si responden - INSERT/ir a otra página ..

Here son algunos buenos puntos sobre no usar conexión persistente en aplicaciones web

  • Cuando se bloquea una tabla, normalmente está desbloqueada cuando se cierra la conexión, pero como las conexiones persistentes no se cierran, las tablas que dejan accidentalmente bloqueadas permanecerán bloqueadas, y la única forma de desbloquearlas es esperar a la conexión o cancelar el proceso. El mismo problema de bloqueo ocurre con las transacciones. (Ver comentarios a continuación el 23-Abr-2002 & 12-Jul-2003)

  • tablas Normalmente temporales se eliminan cuando la conexión se cierra, pero dado que las conexiones persistentes no cierre, tablas temporales no son tan temporal. Si no elimina explícitamente tablas temporales cuando están hechas, esa tabla ya existirá para un nuevo cliente que reutilice la misma conexión . El mismo problema ocurre con la configuración de las variables de sesión . (Véanse los comentarios a continuación sobre 19-Nov-2004 & 07-agosto-2006)

  • Si PHP y MySQL están en el mismo servidor o red local, el tiempo de conexión puede ser insignificante, en cuyo caso no hay ninguna ventaja a conexiones persistentes.

  • Apache no funciona bien con conexiones persistentes. Cuando recibe una solicitud de un nuevo cliente, en lugar de usar uno de los hijos disponibles que ya tiene una conexión persistente abierta, tiende a engendrar un nuevo hijo, que luego debe abrir una nueva base de datos conexión. Esto causa el exceso de procesos que simplemente están durmiendo, desperdiciando recursos y causando errores cuando llega a sus conexiones máximas , además de que anula cualquier beneficio de las conexiones persistentes. (Ver comentarios a continuación sobre 03-Feb-2004, y la nota al http://devzone.zend.com/node/view/id/686#fn1)

+1

La razón por la que usas mysql_pconnect es exactamente cuando estás haciendo una aplicación web para que no tengas que hacer la costosa operación de conectarse a la base de datos para cada página presentada. – nos

+0

y por qué debería mi conexión permanecer abierta mientras estoy leyendo mi horóscopo, por ejemplo, puede tomar 1 hora después de que pida otra página ?! –

+0

Gracias, chicos. Eso hace las cosas mucho más claras para mí. – Kwame

1

Usted también debe mirar a mysqli y pdo. mysql-extension es bastante antiguo y no admite declaraciones preparadas que mysqli hace.Y pdo admite múltiples bases de datos sin cambiar las consultas.

-1

No responda más esta pregunta, se ha preguntado y respondido en otro lugar. Ver enlaces arriba.

+4

Esta no es una respuesta, pero debería ser un comentario en su lugar. –

+2

Gracias por la marca abajo :) –

+2

Lo marqué porque era lo único correcto. –

1

Debe usar mysql_pconnect en sitios altamente cargados, por lo tanto, la conexión se reutilizará. Esto puede mejorar la velocidad hasta dos veces ...

Pero, si no espera altas cargas; usa la conexión normal por las razones que Svetlozar Angelov mencionó anteriormente.