Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2009, 10:11
abigor66
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 11 años, 9 meses
Puntos: 8
Pregunta Tiempo de ejecusión excedido como evitarlo?

Buen día foreros.

he creado un aplicación para un concuro donde se asignan números adicionales a los participantes, el problema es que son más de 1000 concursantes y el sistema alcanza a asignar 60 nuevos numeros antes de que aparezca el mensaje "Fatal error: Maximum execution time of 30 seconds exceeded in ...."

que debo hacer?

el script es el siguiente:

Código php:
Ver original
  1. <?
  2. if (!empty($_GET['id'])) {
  3.  $id = $_GET['id'];
  4.  
  5.  $sql = mysql_query("SELECT * FROM num_sorteo WHERE id_concurso='".$id."' GROUP BY user");
  6.   while($row = mysql_fetch_array($sql)) {
  7.    $user_id= $row['user'];
  8.  
  9.    $numero = range (-1,10000);
  10.    $numero = implode (', ', $numero);
  11.    $numero = str_replace(", 0,","",$numero);
  12.    $numero = str_replace("-1","",$numero);
  13.    $numero = str_replace(" 10000","",$numero);
  14.  
  15.    $sql_2 = mysql_query("SELECT * FROM num_sorteo WHERE id_concurso='".$id."'");
  16.     while($row_2 = mysql_fetch_array($sql_2)) {
  17.      $numero = str_replace(" ".$row_2['num'].",","",$numero);
  18.     }
  19.    mysql_free_result($sql_2);
  20.  
  21.    $dato = explode (", ", $numero);
  22.  
  23.    if (count($dato)!==1) {
  24.     $datoAleatorio=array_rand($dato,2);
  25.     for($i=1; $i<=count($datoAleatorio); $i++){
  26.      $num = $dato[$datoAleatorio[$i]];
  27.      $ok = mysql_query("INSERT INTO num_sorteo (id_concurso, user, num, numero) VALUES ('$id', '$user_id', '$num', '$num')");
  28.      mysql_query("DELETE FROM num_sorteo WHERE id_concurso='0'");
  29.     }
  30.    }
  31.   }

Gracias de antemano.