Foros del Web » Programando para Internet » PHP »

Rendimiento

Estas en el tema de Rendimiento en el foro de PHP en Foros del Web. Buenas, tengo este codigo, lo que me pasa esque puede llevarse mas de 1.30 minuto al poner por ejemplo 1.000 lineas de codigo en el ...
  #1 (permalink)  
Antiguo 28/12/2015, 09:06
 
Fecha de Ingreso: diciembre-2015
Mensajes: 4
Antigüedad: 8 años, 3 meses
Puntos: 0
Rendimiento

Buenas, tengo este codigo, lo que me pasa esque puede llevarse mas de 1.30 minuto al poner por ejemplo 1.000 lineas de codigo en el textarea.

Lo que hace el script es, guarda en una array cada uno de los saltos de linea y crea otro array en el que elimina las lineas vacidas[Saltos de lineas vacidos] y posteriormente, hago varias comprobaciones con cada linea.

Código PHP:
if(@$_GET['id'] == 'upload_validate'):

    
session_start();
    
ini_set('max_execution_time'300);
    if(!isset(
$_SESSION['username'])):
        echo 
'Tienes que iniciar session';
    elseif(empty(
$_POST['language'])):
        echo 
'Selecciona el lenguaje.';
    elseif(empty(
$_POST['serie'])):
        echo 
'Selecciona la serie.';
    elseif(empty(
$_POST['code'])):
        echo 
'Debes introducir almenos 1 enlace.';
    else:
      
$code explode("\n",$_POST['code']);

      
//Eliminar los espacios en blanco
      
$code_good = array();
      foreach(
$code as $n => $value):
          if(
strlen($value) >= 5):
              
$code_good[] = $value;
          else:
              unset(
$code[$n]);
          endif;
      endforeach;

      if(empty(
$_POST['temporada']) && empty($_POST['capitulo'])):
          foreach(
$code_good as $n => $value):
              
$enlace explode(' ',$value); //Enlace[1]
              
@$enlace[1] = trim($enlace[1]);
              @
$temporada explode('x',$enlace[0]); //Temporada[0] Temporada[1]
              
if(!preg_match('/^([\0-9]+)x([0-9]+) \b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i',$value)):
                  echo 
'La estructura('.$value.') es incorrecta.';
                  exit();
              else:
                  
$enlace1[1] = $enlace[1];
                  
$check_url explode('://'$enlace[1]);
                  
$check_url1 explode('/'$check_url[1]);
                  
$enlace[1] = $check_url[0].'://'.$check_url1[0];
                  
$url1 $database->runQuery("SELECT type FROM login_url WHERE url = '".$enlace[1]."'");
                  if(
$url2 mysqli_fetch_assoc($url1)):

                      
//Enlace
                      
$enlace2 $database->runQuery("SELECT enlace FROM enlace WHERE enlace = '".mysqli_real_escape_string($db$value)."'");
                      if(
$enlace3 mysqli_fetch_assoc($enlace2)):
                          echo 
'El enlace('.$value.') ya ha sido publicado.<br>';
                          exit();
                      endif;

                  else:
                      echo 
'La URL('.$enlace1[1].') no esta permitida en nuestra base de dato.';
                      exit();
                  endif;
             endif;
          endforeach;
      else:
          foreach(
$code_good as $n => $value):
              
$value trim($value);
              if(!
preg_match('/^\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i',$value)):
                  echo 
'La estructura('.$value.') es incorrecta.';
                  exit();
              elseif(
filter_var($valueFILTER_VALIDATE_URL) === false):
                  echo 
'La pagina web('.$value.') es incorrecta.';
                  exit();
              else:
                
$value1 $value;
                
$check_url explode('://'$value);
                
$check_url1 explode('/'$check_url[1]);
                
$value $check_url[0].'://'.$check_url1[0];
                  
$url1 $database->runQuery("SELECT type FROM login_url WHERE url = '".$value."'");
                  if(
$url2 mysqli_fetch_assoc($url1)):

                      
//Enlace
                      
$enlace2 $database->runQuery("SELECT enlace FROM enlace WHERE enlace = '".mysqli_real_escape_string($db$value1)."'");
                      if(
$enlace3 mysqli_fetch_assoc($enlace2)):
                          echo 
'El enlace('.$value1.') ya ha sido publicado.<br>';
                          exit();
                      endif;

                  else:
                      echo 
'La URL('.$value1.') no esta permitida en nuestra base de dato.';
                      exit();
                  endif;
             endif;
          endforeach;
      endif;
    endif;

endif; 
Saludos y gracias.
  #2 (permalink)  
Antiguo 28/12/2015, 09:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Rendimiento

¿Y exactamente cual es el problema?

Porque a simple vista lo más lento serían las consultas a la base de datos, nada más.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/12/2015, 09:22
 
Fecha de Ingreso: diciembre-2015
Mensajes: 4
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Rendimiento

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Y exactamente cual es el problema?

Porque a simple vista lo más lento serían las consultas a la base de datos, nada más.
El problema es ese, que no puedo permitirme que la consulta tarde 1 minuto y medio o incluso 2 minutos hasta que termina.

Necesitaría saber como puedo optimizarlo mas.

Saludos y gracias por contestar.
  #4 (permalink)  
Antiguo 28/12/2015, 09:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Rendimiento

El problema no es el código, no hace falta optimizarlo, el problema son las consultas y si siempre vas a hacer las mismas consultas no tiene mucho sentido ¿por qué no usas un sistema de caché?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: mysql, rendimiento, select
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 15:17.