Diferencia entre revisiones de «Plantilla:PHP/ConexionesPersistentesMysqli»

De WikiEducator
Saltar a: navegación, buscar
(Conexiones entre diferentes páginas)
 
(5 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
===Conexiones entre diferentes páginas===
+
===Conexiones Persistentes===
Es muy frecuente que la misma conexión se quiera mantener en diferentes páginas PHP. La primera idea lógica sería guardar la conexión en una viariable de sesión y serializarla. Este concepto de serializar estás brevemente explicado en un apartado posterior.
+
Es muy frecuente que la misma conexión se quiera mantener en diferentes páginas PHP. La primera idea lógica sería guardar la conexión en una viariable de sesión y serializarla. Este concepto de serializar está brevemente explicado en un apartado posterior.
{{MRM_Ejemplos|Title=Idea 1 '''''No válida'''''|
+
{{MRM_Ejemplo|Title=Idea 1 '''''No válida'''''|
 
<source lang=php>
 
<source lang=php>
 
//conecto en localhost a la base de datos dwes
 
//conecto en localhost a la base de datos dwes
Línea 19: Línea 19:
 
....
 
....
 
</source>
 
</source>
}
+
}}
Este tema no funciona, pues no podemos serializar objetos de tipo recurso como es el caso de '''''mysqli''''', ver más información  en la web de php
+
<br />
 +
Esta forma de trabajar no funciona, pues no podemos serializar objetos de tipo recurso como es el caso de '''''mysqli''''', ver más información  en la web de php
 
{{MRM_Recursos de la Web|
 
{{MRM_Recursos de la Web|
 
*http://www.php.net/manual/en/intro.session.php
 
*http://www.php.net/manual/en/intro.session.php
Línea 28: Línea 29:
 
  las variables resource no pueden ser almacenadas en la sesión.
 
  las variables resource no pueden ser almacenadas en la sesión.
 
}}
 
}}
 
+
<br />
===Serializar===
+
Podemos actuar con otra estrategia. Consiste en trabajar con una conexión persistente.La idea de una conexión persistente es que si cuando se va a conectar a una base de datos, ya se hizo con anterioridad, no se vuelve a crear una nueva conexión, si no que se utiliza la que ya teníamos.
 +
Para hacer una conexión persistente se utiliza una '''''p''''' delante del identificador del host donde tengamos la conexion
 +
<source lang=php>
 +
$con = new mysqli("p:localhost", "root", "root", "dwes");
 +
</source>
 +
*Ahora la conexión sería persistente
 +
{{MRM_Recursos de la Web|Title=Conexiónes persistentes|
 +
*http://www.php.net/manual/es/mysqli.persistconns.php
 +
*http://manuales.guebs.com/php/features.persistent-connections.html
 +
}}
 +
<!-- Hablar de la estrategia skeleton ...  -->

Última revisión de 04:34 7 mar 2017

Conexiones Persistentes

Es muy frecuente que la misma conexión se quiera mantener en diferentes páginas PHP. La primera idea lógica sería guardar la conexión en una viariable de sesión y serializarla. Este concepto de serializar está brevemente explicado en un apartado posterior.


Icon casestudy.gif
Idea 1 No válida
//conecto en localhost a la base de datos dwes
$con = new mysali("localhost", "root", "root", "dwes");
....
//Guardo la en una variable de sesión  la conexión serializada
$conSerializada = serialize($con);
$_SESSION['conexion']=$conSerializada;
.....

Cuando en la otra página necesitemos recuperar la conexión la leeríamos y la des-serializaríamos.

....
sesion_start();
$con = unserialize($_SESSION['conexion']);
....



Esta forma de trabajar no funciona, pues no podemos serializar objetos de tipo recurso como es el caso de mysqli, ver más información en la web de php


Icon inter.gif
Recursos de la Web
Advertencia
Debido a que los datos de sesión son serializados, 
las variables resource no pueden ser almacenadas en la sesión.



Podemos actuar con otra estrategia. Consiste en trabajar con una conexión persistente.La idea de una conexión persistente es que si cuando se va a conectar a una base de datos, ya se hizo con anterioridad, no se vuelve a crear una nueva conexión, si no que se utiliza la que ya teníamos. Para hacer una conexión persistente se utiliza una p delante del identificador del host donde tengamos la conexion

$con = new mysqli("p:localhost", "root", "root", "dwes");
  • Ahora la conexión sería persistente