Foros del Web » Programando para Internet » PHP »

Como hacer una conexion persistente en MongoDB

Estas en el tema de Como hacer una conexion persistente en MongoDB en el foro de PHP en Foros del Web. Saludos a todos!.. Eh estado investigando MongoDB y me eh topado con algo interesante. En primer lugar me decia que hacer este tipo de conexion ...
  #1 (permalink)  
Antiguo 07/10/2011, 10:38
 
Fecha de Ingreso: septiembre-2011
Ubicación: Peru - Lima
Mensajes: 16
Antigüedad: 10 años, 9 meses
Puntos: 0
Información Como hacer una conexion persistente en MongoDB

Saludos a todos!.. Eh estado investigando MongoDB y me eh topado con algo interesante.

En primer lugar me decia que hacer este tipo de conexion a MongoDB era ineficiente porque si se caia la conexion no seria nuevamente Autentificada (utilizando la clase MongoDB):
Código PHP:
<?php

$m 
= new Mongo();
$db $m->admin;

$db->authenticate($username$password);

?>
Entonces, opte por hacer uso de la clase Mongo y hacer mi conexion de esta manera:

Código PHP:
public function __construct() {
            
$username 'administrador';
            
$userpass 'administrador';
            
$database 'Carrito';
            
$colecction 'Productos';
            
            
$this->_cn = new Mongo("mongodb://$username:[email protected]/$database");
            
$this->_collection $this->_cn->selectCollection($database$colecction);

    } 
Asi seria autentificada (Segun lo q lei) cada vez, si esque se cae la Conexion.

Ahora me dice q hacer una conexion persistente es muy recomendada ya que hacer q cada vez se conecte seria engorroso. Viendo el ejemplo:

Código PHP:
<?php

for ($i=0$i<1000$i++) {
  
$m = new Mongo("localhost:27017", array("persist" => "x"));
}

?>
Aqui viene mi pregunta... ¿Como adapto mi conexion anterior a esta conexion persistente en mi App?.. Lo intente pero me sale error.. ¿Que significa esa "x"?

Y una duda q me deja muy inquieto... Como veran, utilizo la clase MONGO en mi conexion. Sin embargo, encontre un metodo llamado "COMMAND". Segun la documentacion me dice que la clase MONGODB tiene acceso a ese metodo y no MONGO.. ¿Puedo hacer uso de ese metodo command desde la clase Mongo?.. O ¿De que manera puedo utilizarlo?... Esa es una fuerte duda que tengo.

Porfavor, necesito q absuelvan mis dudas. Gracias de Antemano y Suerte a todos
  #2 (permalink)  
Antiguo 07/10/2011, 12:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 1 mes
Puntos: 2135
Respuesta: Como hacer una conexion persistente en MongoDB

Pues tendrías que ver la documentación para que veas que parámetro debes de ponerle en "x", ya que eso es de la propía clase que usas, no es algo de PHP, y adaptarla solamente agrega ese array al final de tu cadena de conexión y debe de funcionar.

Saludos.
  #3 (permalink)  
Antiguo 07/10/2011, 12:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 1 mes
Puntos: 2135
Respuesta: Como hacer una conexion persistente en MongoDB

Viendo la documentación dice que ahora todas las conexiones son persistentes: http://www.php.net/manual/en/mongo.construct.php por lo que no importa si le pasas o no el parámetro.

Saludos.
  #4 (permalink)  
Antiguo 07/10/2011, 12:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 1 mes
Puntos: 2135
Respuesta: Como hacer una conexion persistente en MongoDB

Respecto a tu segunda duda, el método COMMAND solamente pertenece a MongoDB, por lo que tienes que hacer como dice el API:
Código PHP:
Ver original
  1. $m = new Mongo($dns); // connect
  2. $db = $m->selectDB("example");
  3. $db->command($cmd);

Saludos.
  #5 (permalink)  
Antiguo 09/10/2011, 19:02
 
Fecha de Ingreso: septiembre-2011
Ubicación: Peru - Lima
Mensajes: 16
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Como hacer una conexion persistente en MongoDB

Uuhmmm.. segun la documentacion (Disculpa si me equivoco o si interprete mal la documentacion) ese tipo de conexion a la DB me dice que es Ineficiente. Por lo que si se cae la conexion ya no sera autentificada nuevamente.

Y es mejor hacerla como la eh estado haciendo xq ai si puedo hacer q se autentifique varias veces conforme se caiga la conexion.

¿Esta bien?
  #6 (permalink)  
Antiguo 09/10/2011, 19:05
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 10 años, 11 meses
Puntos: 793
Respuesta: Como hacer una conexion persistente en MongoDB

Según el manual

Cita:
Eliminada la opción de persistencia, ya que ahora todas las conexiones lo son. Se puede seguir usando, pero no tendrá ningún efecto.
sobre tu ejemplo, es eso un simple ejemplo para ver que es más rápido si esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. for ($i=0; $i<1000; $i++) {
  4.   $m = new Mongo("localhost:27017", array("persist" => "x"));
  5. }
  6.  
  7. ?>

o esto

Código PHP:
Ver original
  1. <?php
  2.  
  3. for ($i=0; $i<1000; $i++) {
  4.   $m = new Mongo();
  5. }
  6.  
  7. ?>

Y obviamente lo primero es más rápido pero no quiere decir que así se hagan las conexiones persistentes. Ahora todas lo son, así que no tiene sentido.

y sobre la X que hablabas: http://www.php.net/manual/es/mongo.construct.php

Cita:
"persist"
Si la conexión debe o no ser presistente. Si se habilita, la conexión lo será. Su representación en forma de string se usa como id de la conexión, de modo que dos instancias de Mongo que se inicialicen con array("persist" => "foobar") compartirán la misma conexión, mientras que una instancia inicializada con array("persist" => "barbaz") usará una conexión a base de datos diferente.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 09/10/2011 a las 19:20

Etiquetas: conexion, mongodb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:55.