Foros del Web » Programando para Internet » PHP »

Problema de concurrencia??

Estas en el tema de Problema de concurrencia?? en el foro de PHP en Foros del Web. Buenas a todos,soy nuevo por aqui y tambien algo nuevo en el tema PHP y mysql. Resulta que estoy realizando un sistema web de expedicion ...
  #1 (permalink)  
Antiguo 11/03/2013, 06:03
 
Fecha de Ingreso: marzo-2013
Mensajes: 8
Antigüedad: 11 años
Puntos: 0
Pregunta Problema de concurrencia??

Buenas a todos,soy nuevo por aqui y tambien algo nuevo en el tema PHP y mysql. Resulta que estoy realizando un sistema web de expedicion de tickets para atencion al publico, el cual consta de varios puestos o boxes de atencion. Cada box puede ser habilitado/deshabilitado a voluntad y tambien puede avisar a la clientela que esta esperando, que hay alguien en atencion actualmente. Acabada mi breve intro, les expongo mi problema actual: Realice algunas pruebas "en vivo" con boxes activos, llamando tickets al mismo tiempo y en una de esas pruebas dos boxes llamaron al mismo ticket y en ambos boxes aparecio en atencion EL MISMO NRO DE TICKET!! Era muy extraño pues en anteriores pruebas no habia tenido mayor drama. La consulta es: debo utilizar algun tipo de bloqueo de registros o tablas para que un box llame, bloquee, desbloquee y luego permita que el siguiente box(no importa si el mismo llamo un ticket a solo milesimas de segundo del anterior) llame un nro de ticket siguiente o posterior? Les posteo el codigo(disculpen lo burdo y desordenado pero estoy empezando, jiji):

Código PHP:
Ver original
  1. if (isset($_POST["llamadas"]))  
  2.         {
  3.             ////////////////////////////////
  4.            
  5.             $_SESSION["llamada"] = "SI";
  6.             $usuario = $_SESSION["user"];
  7.            
  8.             $fechaactual = mysql_query("SELECT CURDATE()");
  9.             $fecha_actual2 = mysql_fetch_row($fechaactual);
  10.             $fecha_actual = $fecha_actual2[0];
  11.            
  12.             $result =  mysql_query("SELECT min(nroticket) FROM tickets_caa WHERE fecha=CURDATE() AND estado='P' and llamado = 'N'");
  13.             $result2 = mysql_fetch_row($result);
  14.             $result2 = $result2[0];
  15.             $nroticket = $result2;
  16.             $_SESSION["k_nroticket"] = $nroticket;
  17.                        
  18.             if ($result2==NULL)
  19.             {
  20. ?>
  21.                  <script>
  22.                  setInterval( "actualizar()", 1000 );
  23.                  </script>
  24.                  <fieldset class="campo2">
  25.                  <div id="capa">
  26.                  </div>
  27.                  </fieldset>
  28. <?
  29.             }
  30.             else
  31.             {
  32.                 $hora_actual = date("H:i:s");
  33.                 $movimiento = 'ATE';
  34.        
  35.                 $_SESSION["k_movimiento"] = $movimiento;
  36.                 $movimiento2 = $_SESSION["k_movimiento"];
  37.        
  38.                 $movimientos = 'INSERT INTO movimientos_caa(usuario,fecha,hora_inicio,tipo_movimiento,nroticket)
  39.                 VALUES (\''.$usuario.'\',\''.$fecha_actual.'\',\''.$hora_actual.'\',\''.$movimiento.'\',\''.$nroticket.'\')';
  40.                 mysql_query($movimientos) or die(mysql_error());
  41.                    
  42.                 $llamado = "S";
  43.                 $llamada = "UPDATE tickets_caa SET llamado ='$llamado',exhibido='1' WHERE nroticket = '$nroticket'";
  44.  
  45.                 mysql_query($llamada) or die(mysql_error());
  46.        
  47.                 if ($nroticket < 100)
  48.                 {
  49.                     echo '<fieldset class="enatencion"><div class="atendiendo">'.'En atenci&oacute;n el Nro. de Ticket: 0'.$nroticket.'</div></fieldset>';
  50.                    
  51.                 }
  52.                 else
  53.                 {
  54.                     echo '<fieldset class="enatencion"><div class="atendiendo">'.'En atenci&oacute;n el Nro. de Ticket: '.$nroticket.'</div></fieldset>';
  55.                 }
  56.                
  57.                 $box = $_SESSION["box"];
  58.                
  59.                 $asignado = 'INSERT INTO tickets_box_caa(nroticket,box,fecha)
  60.                 VALUES (\''.$nroticket.'\',\''.$box.'\',\''.$fecha_actual.'\')';
  61.                
  62.                 mysql_query($asignado) or die (mysql_error());
  63.                
  64.                 $mantener = "UPDATE tickets_caa SET estado = 'A' WHERE nroticket = '$nroticket' AND estado = 'P'";
  65.                 mysql_query($mantener) or die (mysql_error());
  66.             }

Etiquetas: mysql, registro, select, sql, tabla
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 00:18.