Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Pagina php se cuelga al hacer consulta con transacciones mysqli (https://www.clubdelphi.com/foros/showthread.php?t=96012)

marco3k 20-12-2022 21:55:18

Pagina php se cuelga al hacer consulta con transacciones mysqli
 
Hola, programo en php puro, uso mysql como db, cuando no usaba transacciones, es decir cuando usaba transacciones automaticas no tenia ese problema y las páginas php iba fluido, pero empece a necesitar actualizar 2 o mas tablas y he notado que en ciertas ocasiones se cuelga la página unos segundos y sale esa pantalla de pagina no encontrada, presionas F5 y se vuelve a restablecer. Debo suponer que mientras estan consultando los datos tambien se estan insertando datos en la tabla y supongo que ahi se genera ese error. Este es un ejemplo del codigo que empleo cuando uso transacciones:
Código PHP:

public function insertar(){
    
$conex $this->ObtenerConexion();
    try{
        
$conex->autocommit(false);
        
$conex->query("STAR TRANSACTION");
        
$sql="INSERT INTO TB_PAGO (REG_ID,PAGO_FECHA,PAGO_ANIO,PAGO_SI,PAGO_CP,PAGO_CHEQUE,PAGO_MONTO,PAGO_OBS,PAGO_SUSPENDIDO,BE_ID) ".
        
" VALUES ('$this->P_REG_ID','$this->P_PAGO_FECHA','$this->P_PAGO_ANIO','$this->P_PAGO_SI','$this->P_PAGO_CP','$this->P_PAGO_CHEQUE','$this->P_PAGO_MONTO','$this->P_PAGO_OBS',0,0)";        
        
$conex->query($sql);
        
$retorno=$this->actualizar_saldo($conex,$this->P_REG_ID);
        
//***

        
$this->P_MENSAJE_ERROR $conex->error;                                    
        if (!empty(
$this->P_MENSAJE_ERROR)) {
            
$error_original GetMensajeErrorx($conex->errno,$conex->error);
            throw new 
Exception($error_original);
        }
        
//***
        
if ($retorno==0) {
            throw new 
Exception('No se pudo consultar los pagos.');
        }                
        if (
$retorno==3) {
            throw new 
Exception('Hay saldo negativo.');
        }        
        
$conex->commit();
        
$this->P_RETORNO 1;
    }catch(
Exception $e){
        
$conex->rollback();
        
$this->P_RETORNO 0;
        if (empty(
$this->P_MENSAJE_ERROR)){
            
$this->P_MENSAJE_ERROR $e->getMessage();
        }
    }
finally{
        
$conex->autocommit(true);
    }
    return 
$this->P_RETORNO;



Estoy seguro que es por las transacciones el problema, entonces que puedo optimizar o que parametro podría cambiar en las transacciones para que no se cuelgue.

Gracias por la ayuda que me puedan brindar.

marco3k 22-12-2022 15:18:55

Este es el mensaje que sale, luego pongo reintentar o presiono F5 y se reanuda normalmente, sólo sale de vez en cuando, pero es un poco molesto ese mensaje. Ah por cierto el sistema se ejecuta en una intranet.
Cita:

La conexión ha caducado.

El servidor xxx está tardando demasiado en responder.

El sitio podría estar no disponible temporalmente o demasiado ocupado. Vuelva a intentarlo en unos momentos.
Si no puede cargar ninguna página, compruebe la conexión de red de su equipo.
Si su equipo o red están protegidos por un cortafuegos o proxy, asegúrese de que Firefox tiene permiso para acceder a la web.
Gracias por cualquier ayuda que me puedan brindar.

Julián 16-01-2023 19:35:32

Así, a primera vista, diría que quizá sea "START" en lugar de "STAR".

Un saludo!

marco3k 20-01-2023 22:32:10

Cita:

Empezado por Julián (Mensaje 550062)
Así, a primera vista, diría que quizá sea "START" en lugar de "STAR".

Un saludo!


Gracias por la observación, ya lo actualice, pero de momento no salta esos mensajes que describi desde hace 1 semana, llegue a pensar q es por el volumen de datos que se consulta en rango de fechas, pero no estoy seguro. Si el mensaje vuelve lo comentare.


La franja horaria es GMT +2. Ahora son las 08:31:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi