PHP - Pagina php se cuelga al hacer consulta con transacciones mysqli

 
Vista:
sin imagen de perfil

Pagina php se cuelga al hacer consulta con transacciones mysqli

Publicado por Marco (7 intervenciones) el 20/12/2022 23:17:08
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 paginas 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Pagina php se cuelga al hacer consulta con transacciones mysqli

Publicado por Marco (7 intervenciones) el 22/12/2022 15:23:11
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.
1
2
3
4
5
6
7
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de John
Val: 91
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Pagina php se cuelga al hacer consulta con transacciones mysqli

Publicado por John (6 intervenciones) el 22/12/2022 16:34:21
Probaste aumentar el limite de memoria y el tiempo de ejecución? puedes hacerlo a traves del php.ini o en el script que estes utilizando colocando en las primeras lineas

1
2
ini_set('max_execution_time', 0);
ini_set('memory_limit', '4000M');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar