Foros del Web » Programando para Internet » PHP »

Cola de peticiones a base de datos

Estas en el tema de Cola de peticiones a base de datos en el foro de PHP en Foros del Web. Buenas, la verdad es que he estado buscando información y la poca que he encontrado está en inglés y no la entiendo bien. Mi problema ...
  #1 (permalink)  
Antiguo 10/09/2009, 03:12
 
Fecha de Ingreso: septiembre-2009
Mensajes: 7
Antigüedad: 14 años, 7 meses
Puntos: 1
Cola de peticiones a base de datos

Buenas, la verdad es que he estado buscando información y la poca que he encontrado está en inglés y no la entiendo bien.
Mi problema es que quiero hacer una cola en PHP para que esperen las peticiones a la base de datos si ésta está saturada. Supongo que MySQL tendrá una cola interna, pero llegará un momento que si no da para más pues no da para más, por eso en ese momento quiero que empiece a funcionar una cola implementada en PHP que haga esperar al usuario mediante AJAX o algo así hasta que se pueda cursar su petición.

Alguién ha hecho algo de esto algouna vez o puede darme alguna idea?
  #2 (permalink)  
Antiguo 10/09/2009, 06:25
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Cola de peticiones a base de datos

En realidad PHP se encarga y la base de datos de hacer la cola.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 10/09/2009, 06:47
 
Fecha de Ingreso: septiembre-2009
Mensajes: 7
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Cola de peticiones a base de datos

Me podrías decir dónde está documentado la cola que hace PHP a la hora de acceder a la base de datos? Me parecería interesante mirarmelo, ya que supongo que se podrá conigurar el tamaño y demás.

Lo que no entiendo entonces es porque si PHP hace internamente esta cola, muchas veces si acceden muchos usuarios a la vez a la base de datos, ésta peta si el servidor no tiene muchos recursos. Se supone que debería aguantar porque PHP los encolaría hasta que la BBDD estuviera menos congestionada no?

Me puedes explicar un poco más cómo va este tema?

Gracias
  #4 (permalink)  
Antiguo 10/09/2009, 07:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Cola de peticiones a base de datos

Dejame corregir algo, Apache o IIS se encarga de atender las peticiones simultaneas, la directiva maxClients se encarga de especificar el límite de peticiones simultáneas que serán atendidas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 10/09/2009, 07:56
 
Fecha de Ingreso: septiembre-2009
Mensajes: 7
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Cola de peticiones a base de datos

Sí, pero eso que dices no son las conexiones simultáneas a la base de datos, sino las conexiones simultáneas al servidor web, son cosas distintas. De hecho puede que la BBDD haya petado antes de llegar al maxClients ese que me has puesto, o al revés.
  #6 (permalink)  
Antiguo 10/09/2009, 08:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Cola de peticiones a base de datos

MySQL se encarga de trabajar con las transacciones que se hagan en la base de datos, PHP lo que hace es abrir una conexion y luego cierra automaticamente la conexion, pero si tu quieres cerrarla manualmente porque vas a ejecutar un codigo de php que tomara algun tiempo y no quieres que permanezca la conexion abierta mientras se hace el codigo puedes usar mysql_close y/o mysql_free_result, asi cierra esa conexion y liberas memoria, claro esta no debes cerrarla si vas a ejecutar codigos que tenga que ver directamente con la base de datos, funciones como mysql_fetch_xxxxx, etc. Te indico esto para que así PHP se encargue de continuar con otra persona que esta esperando conectarse a la base de datos y no puede porque estan ocupadas todas las conexiones hacia la base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 10/09/2009, 09:04
 
Fecha de Ingreso: septiembre-2009
Mensajes: 7
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Cola de peticiones a base de datos

Creo que no has entiendido mi post inicial. Mi problema es que, si yo tengo 100 peticiones a la vez a la BBDD y resulta que ésta solo soporta 80, pues las otras 20 peticiones se van a quedar sin cursar, el PHP devolverá error. Y lo que quiero es que esas 20 consultas se queden esperando en una cola FIFO y se vayan cursando a medida que se vaya descongestionando la base de datos. Como esto puede tardar algún tiempo, al usuario se le iría informando vía web del estado de su petición.
Eso es lo que quiero hacer, pero no sé cómo.
  #8 (permalink)  
Antiguo 10/09/2009, 09:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Cola de peticiones a base de datos

Buscando varios documentos en internet encontre una herramienta que monitorea la base de datos, ve cuantas personas estan conectadas, etc. Se llama ajaxMyTop es gratuito y esta hecho en PHP, te sugiero que lo veas y verifiques si leyendo el codigo encuentras lo que quieres hacer. mientras tanto vi que en mysql se puede hacer este query y te muestra cuantos query se estan haciendo al momento SHOW PROCESSLIST. Sería bueno que te pases al foro para ver si existe otra forma extra para monitorear las transacciones de MySQL. Pero con esa herramienta que te indique creo que puedes lograr lo que deseas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 10:55.