Foros del Web » Programando para Internet » PHP »

administrar querys en ejecucion.

Estas en el tema de administrar querys en ejecucion. en el foro de PHP en Foros del Web. hola maestros la verdad no tengo claro a que foro hacerla(php o linux). bueno tenemos un sistema administrado en php potencialmente pueden ser aproximadamente 700 ...
  #1 (permalink)  
Antiguo 07/02/2006, 08:31
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
administrar querys en ejecucion.

hola maestros la verdad no tengo claro a que foro hacerla(php o linux).

bueno tenemos un sistema administrado en php potencialmente pueden ser aproximadamente 700 usuarios.

no entiendo muy bien lo que ocurre pero tratare de explicarlo.

-un usuario hace una query . esta se demora mas de lo esperado. cierra la pag.
-el usuario habre otra vez pag, y realiza nuevamente la misma query.

pasa que la primera query aun continua en ejecucion y deja en espera a las que siguen.

-¿no si esto es por mala practica de programacion o el servidor linux esta mal administrado?.
-la unica forma actualmente de administrar esto es mediante mysqlfront.
-chequeando manualmente las query y eliminando las que se demoran.

mi pregunta . ¿se podria implementar un administrador en php? que realizara:
-chequeara las querys en ejecucion.
-si una se demora mas de los esperado(60 seg.) la elimina.

un saludo.
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"
  #2 (permalink)  
Antiguo 07/02/2006, 09:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Deberías controlar el tema por el lado del motoro de BBDD que uses (Mysql parece ser).

Sobre todo para controlar el "time out" de una consulta SQL realizada y probablemente otros detalles que seguramente te podrán confirmar mejor en el foro de "Base de datos -> Mysql".

Según los permisos de acceso a tu servidor Mysql que uses y usuario configurado con el que te conectas con tus scripts PHP, podrías ver los procesos que está ejecutando Msyql y eventualmente "matar" uno de ellos.

De hecho esto lo hace por ejemplo phpMyadmin (www.phpmyadmin.net), un administrador de Mysql creado en PHP .. Pero, si quieres hacerlo tu .. primero necesitas todo el SQL necesario para mostrar procesos y como "matarlos" .. Cara a PHP sólo son más consultas SQL que realizar como de costumbre.

http://free.netartmedia.net/Databases/Databases4.html
http://dev.mysql.com/doc/refman/4.1/...ocesslist.html

Cita:
si una se demora mas de los esperado(60 seg.) la elimina
Este proceso desde PHP .. tendrás que llamar al script que crees que haga lo anterior en un "Cron Job" (linux) o "programador de taréas" (windows).

No sé que versión de Mysql usas .. pero sólo en PHP 5.x en adelante puedes usar "procedimientos almacenados" como para ver alguna solución por el lado de SQL puro .. pero no tienes "triggres" (disparadores) para dejar el proceso automático 100% ...

Creo que habría que estudiar mejor el código que usas . .ver que tipo de conexiones usas (persistentes?) y optimicar Mysql a nivel de configuración de este.

Un saludo,
  #3 (permalink)  
Antiguo 07/02/2006, 09:31
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
hola cluster tanto tiempo.

bueno primero gracias por tu completa orientacion. me fije que la bd se conecta de manera persistente , asi que lo cambie a no persistente.

resultado: al cerrar la ventana no corta la conexion , si no que si alguien corta y vuelve a buscar lo mismo no lo deja(osea no crea otra conexion).


-voy chequear el codigo y hacer que javascript haga un mysql_close() cuando la pag. se cierre.
-voy a ver el tema del servidor tambien.

un saludo.
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"
  #4 (permalink)  
Antiguo 07/02/2006, 09:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
resultado: al cerrar la ventana no corta la conexion , si no que si alguien corta y vuelve a buscar lo mismo no lo deja(osea no crea otra conexion).
Lo que es PHP en conexiones NO persistenes . .ciera toda conexión y libera memoria al terminar la ejecución del script.

No sé si tu en tu código SQL haces uso de "transacciones" o algún bloqueo en general de tablas (vía SQL) .. Revisalo, podría ser que alguna transacción no le hiciese el "ROLLBACK" o similar ...

Por lo demás .. las conexiones NO persitentes al desconectarse el cliente pasan a modo "sleep" hasta que el proceso de "time out" las elimina físicamente .. También dependerá probablemente del "caché" que uses en Msyql si es que lo tienes activado:

http://www.databasejournal.com/featu...le.php/3110171

Un saludo,
  #5 (permalink)  
Antiguo 07/02/2006, 09:52
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
no la verdad no usamos transacciones , asi que pienso que deberia ser netamente un tema de servidor myslq(."time out",etc)


un saludo.
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"
  #6 (permalink)  
Antiguo 07/02/2006, 09:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por mveraa
no la verdad no usamos transacciones , asi que pienso que deberia ser netamente un tema de servidor myslq(."time out",etc)


un saludo.
Consulta en el foro de "Base de datos" a ver que sugerencias te dán .. (recuerda indicar que usas conexiones persitentes .. o que probastes también con conexiones no persistentes y en dar información exacta de como queda un reporte de las conexiones activas cuando tienes tus problemas (un "screenshot" de tu MysqlFront ayudaría seguramente).

Un saludo,
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 05:27.