+34 669126284 jorvidu@gmail.com

php-mysqlAunque en breve sacaremos un video donde explicar como transformar nuestra Web completa a la más moderna y recomendada conexión MySQLi, es importante comentar este asunto de la conexión persistente.

Cuando ejecutamos una página Web, y utilizamos nuestro archivo de conexiones (Connections/conexion.php), lo primero que hacemos es conectar con la Base de datos, lo que nos da el acceso para poder hacer consultas, actualizaciones, etc… Esta conexión tiene un coste en recursos y tiempo. De hecho, si en vuestra Web utilizáis mysql_connect, veréis que tiene cierto tiempo de retardo al cargar las páginas, pues cada vez que navegáis a alguna de ellas, tiene que efectuar una conexión nueva. Esta conexión se crea y se destruye cada vez por cada página. Se destruye de forma «natural» pasado un tiempo según la configuración del servidor, o bien si cerráis la conexión mediante código (mysql_close)

La conexion Persistente (mysql_pconnect) es un tipo de conexión similar a la anterior, solo que ésta se mantiene «conectada» y no se vuelve a crear, si en un periodo de tiempo determinado por el servidor se intenta crear otra conexión, esto es, si navegas a otra página que utilice Bases de datos. Obviamente tiene la ventaja de que no se va a crear una conexión por cada página de navegación, sino que se va a crear una conexion la primera vez que se accede a la página, y se va a usar durante toda la navegación. El ahorro de recursos y tiempo es considerable si atacamos continuamente a la Base de datos, cosa que suele ser bastante habitual, según el tipo de Web.

¿Cual es el problema?, es decir, ¿por que no siempre se usa la Persistente (mysql_pconnect)?. Muy sencillo, la limitación de los recursos del servidor. Cuando usamos la no persistente, la conexión se crea y se destruye durante un momento, y eso hace que la probabilidad de que haya muchas conexiones concurrentes sea muy escasa. Si usamos p_connect, estamos dejando conexiones abiertas durante la navegación de cada usuario. Si el servidor permite por ejemplo, 20 conexiones abiertas simultáneas o recurrentes, cuando se alcance ese número, nos va a dar un maravilloso error y no nos dejará navegar más hasta que haya algun hueco para realizar una nueva conexión. En pocas palabras y suponiendo que el limite de nuestro servidor son 20 conexiones:

Conexión mysql_connect:

  • 20 usuarios simultáneos -> Se navega sin problemas
  • Más de 20 usuarios simultáneos -> La probabilidad de que estén más de 20 llamando a la Base de datos a la vez, es decir, cargando una página es muy escasa.

Conexión mysql_pconnect:

  • 20 usuarios simultáneos -> Se navega sin problemas
  • Más de 20 usuarios simultáneos -> Al no cerrarse las conexiones durante la navegación, en cuanto el usuario 21 quiera navegar, le va a saltar error de base de datos por deficiencia de espacio para conexiones.

Una vez más la decisión en vuestras manos, analizando la cantidad de usuarios, el tiempo que están navegando en vuestra Web, etc… La solución mas facil es usar la persistente y solicitar al servidor que os amplie el número de conexiones simultáneas, cosa que se puede hacer si el hosting es de calidad y os lo permiten, claro.