Foros del Web » Programando para Internet » PHP »

CodeIgniter Optimizacion de codigo

Estas en el tema de Optimizacion de codigo en el foro de PHP en Foros del Web. Estimados.. nuevamente quisiera recurrir a ustedes ya que necesito ver la forma de optimizar mi codigo, ya que mi sistema es para personal de call ...
  #1 (permalink)  
Antiguo 17/02/2016, 06:23
 
Fecha de Ingreso: abril-2015
Mensajes: 96
Antigüedad: 9 años
Puntos: 1
Optimizacion de codigo

Estimados.. nuevamente quisiera recurrir a ustedes ya que necesito ver la forma de optimizar mi codigo, ya que mi sistema es para personal de call center y a medida que se van ingresando gestiones se esta relentizando el sistema.

Modelo
Código PHP:
Ver original
  1. public function nueva_busqueda($campos)
  2.     {      
  3.         //definimos si descripción viene vacio o no para utilizar el operador and or
  4.         $and_or = $this->input->get('sucursal') != '' ? ' AND ' : ' OR ';
  5.            
  6.         $condiciones = array();
  7.        
  8.         //recorremos los campos del formulario
  9.         foreach($campos as $campo){
  10.            
  11.             //si llegan las variables y no están vacias
  12.             if($this->input->get($campo) && $this->input->get($campo) != '')
  13.             {
  14.                
  15.                 //definimos la condición para hacer la búsqueda de los campos y de
  16.                 //esta forma podemos hacer uso del array condiciones fuera del loop
  17.                
  18.                  $condiciones[] = "$campo LIKE '%" . $this->input->get($campo) . "%'";
  19.             }
  20.         }
  21.            
  22.         //la consulta base a la que concatenaremos la búsqueda
  23.         $sql = "SELECT * FROM cartera ";
  24.        
  25.         //si existen condiciones entramos
  26.         if(count($condiciones) > 0)
  27.         {
  28.            
  29.             //aquí creamos la condición y la concatenamos a $query
  30.            $sql .= "WHERE " . implode ($and_or, $condiciones);
  31.            $sql .= "order by qDiasMora desc" ;
  32.            
  33.         }
  34.  
  35.         //asignamos a $query la consulta final
  36.         $query = $this->db->query($sql);
  37.        
  38.         //con la siguiente línea podéis ver lo que arroja la
  39.         //consulta escogiendo varios campos, es bueno entenderlo
  40.         //var_dump($sql); exit;
  41.        
  42.         //si se ha encontrado algo
  43.         if($query->num_rows() > 0)
  44.         {
  45.                
  46.             return $query->result();
  47.                
  48.         }else{
  49.            
  50.             return FALSE;          
  51.         }      
  52.     }

modelo 2
Código PHP:
Ver original
  1. function getcall2()
  2.         {
  3.       $sql = "SELECT c.Nombre,a.Fecha_Llamado,a.CompromisoPago,a.Estado,a.Ejecutivo FROM deta_call_gestion a INNER JOIN cartera c  ON a.rut = c.rut where id = (SELECT max(id) FROM deta_call_gestion b where a.rut = b.rut) order by c.Nombre asc";      
  4.       $query = $this->db->query($sql);
  5.       if($query->num_rows() > 0)
  6.     {
  7.         return $query;
  8.     }
  9.         }

Controlador
Código PHP:
Ver original
  1. public function Agenda()
  2.   {
  3.       if($this->session->userdata('nombre_usuario'))
  4.      {          
  5.            $data = array('resultados' => $this->busqueda());
  6.            $data['results'] = $this->prejud_model->getsucursal();
  7.            $data['result1'] = $this->callcenter_model->getcall2();                      
  8.          
  9.           $datos_pag["titulo"]= "Call Center";
  10.            $datos_pag["submenu"]= "1";
  11.            $datos_pag["contenido"]= "Call Center/agenda";
  12.            $this->load->view("plantillas/front_end/header",compact("datos_pag"));
  13.            $this->load->view("plantillas/front_end/sidebar");
  14.            $this->load->view("callcenter/agenda",$data);
  15.            $this->load->view("plantillas/front_end/footer");
  16.  
  17.       }
  18.       else
  19.       {
  20.        redirect('index/index');      
  21.       }      
  22.   }
  23.  
  24.     public function busqueda()
  25.   {
  26.      
  27.     if($this->input->get('buscar'))
  28.     {
  29.  
  30.       //los campos del formulario deben tener el mismo nombre
  31.       //que los de la base de datos a buscar, esto luego lo
  32.       //recorremos para comprobar como vienen      
  33.       $campos = array('TipoGestion', 'rut', 'sucursal');      
  34.       //envíamos los datos al modelo para hacer la búsqueda
  35.       $resultados = $this->buscador_model->Estado_busqueda($campos);
  36.      
  37.       if($resultados !== FALSE)
  38.       {
  39.        
  40.         return $resultados;
  41.        
  42.       }      
  43.  
  44.     }
  45.   }

Vista

Código PHP:
Ver original
  1. <table class="table table-condensed">
  2.   <?php //si hay resultados los mostramos
  3.  
  4.   if(is_array($resultados) && !is_null($resultados))
  5.   {
  6.   ?>  
  7.  
  8.     <thead>
  9.         <tr>
  10.  
  11.             <th>ESTADO</th>
  12.             <th>ACCION</th>                  
  13.             <th>TIPO DE GESTION</th>
  14.             <th>MONTO INSOLUTO</th>
  15.             <th>SUPERVISOR</TH>
  16.             <th>NOMBRE</th>
  17.             <th>RUT</th>
  18.             <th>DV</th>                                  
  19.             <th>SUCURSAL</th>                                        
  20.             <th>DIAS MORA</th>                                    
  21.             <th>ESTADO SOCIO EN GAC</th>
  22.             <th>Fecha Llamado</th>
  23.             <th>Compromiso Pago</th>          
  24.  
  25.     <?php
  26.     foreach($resultados as $fila){
  27.     ?>
  28.         </tr>
  29.     </thead>
  30.     <tbody>
  31.  
  32.  
  33.         <tr class="cuerpo">  
  34.        
  35.        
  36.    <td style="color:green">  
  37.  
  38.  
  39.  
  40.              <?php
  41.               foreach($result1->result() as $row){
  42.               ?>
  43.  
  44.                 <?php
  45.           $datetime1 = date_create($row->Fecha_Llamado);
  46.           $datetime2 = date_create(DATE('Y-m-d'));
  47.           $interval = date_diff($datetime1, $datetime2);
  48.          
  49.           ?>
  50.  
  51.        <?php
  52.  
  53.             $row->CompromisoPago;          
  54.             $Pago = str_replace('/', '-', $row->CompromisoPago);
  55.             $date = date_create_from_format('Y-m-d',$row->Fecha_Llamado);
  56.             $fecha2 = date_format($date, 'd-m-Y');            
  57.  
  58.  
  59.           $datetime3 = date_create($Pago);
  60.           $datetime4 = date_create(DATE('d-m-Y'));
  61.           $interval2 = date_diff($datetime3, $datetime4);                  
  62.  
  63.                  ?>
  64.           <?php if($fila->Nombre === $row->Nombre) { ?>          
  65.            
  66.                  <?php if($interval->format('%R%a')<=2 ){ ?>  
  67.          
  68.          <img src="<?=base_url()?>public/images/check.png" width="20"><?php echo $row->Estado ?>
  69.  
  70.           <?php } elseif ($interval2->format('%R%a')<0 ) { ?>
  71.           <img src="<?=base_url()?>public/images/check.png" width="20"><?php echo $row->Estado ?>  
  72.  
  73.           <?php  } ?>
  74.           <?php } ?>
  75.           <?php } ?>
  76.           </td>
  77.  
  78.           <td class="">
  79.             <?php if ($fila->ESTADOSOCIO == 'Fallecido') {?>
  80.            
  81.             <?php } else {?>
  82.             <a  href="<?php echo base_url() ?>callcenter/guardar/<?php echo $fila->iPersona ?>"  ><img src="<?=base_url()?>public/images/call2.ico" width="20"  /><p><b class="b">GESTION TELEFONICA</b></p> </a>
  83.             <?php } ?>
  84.            </td>                      
  85.           <td><?php print $fila->TipoGestion?></td>
  86.           <td>$ <?php print number_format($fila->vMontoInsoluto)?></td>
  87.           <TD><?php print $fila->supervisor?></TD>          
  88.           <td> <?php print $fila->Nombre ?> </td>            
  89.           <td><?php print $fila->Rut ?></td>  
  90.           <td><?php print $fila->cDv ?></td>                                
  91.           <td><?php print $fila->Sucursal ?></td>                                  
  92.           <td><?php print $fila->qDiasMora ?></td>
  93.           <td>
  94.              <?php print $fila->ESTADOSOCIO ?>
  95.            </td>
  96.           <td class="info">
  97.             <?php
  98.             foreach($result1->result() as $row){ ?>
  99.  
  100.                    <?php
  101.           $datetime1 = date_create($row->Fecha_Llamado);
  102.           $datetime2 = date_create(DATE('Y-m-d'));
  103.           $interval = date_diff($datetime1, $datetime2);
  104.          
  105.           ?>
  106.  
  107.        <?php
  108.  
  109.             $row->CompromisoPago;          
  110.             $Pago = str_replace('/', '-', $row->CompromisoPago);
  111.             $date = date_create_from_format('Y-m-d',$row->Fecha_Llamado);
  112.             $fecha2 = date_format($date, 'd-m-Y');
  113.              
  114.  
  115.  
  116.           $datetime3 = date_create($Pago);
  117.           $datetime4 = date_create(DATE('d-m-Y'));
  118.           $interval2 = date_diff($datetime3, $datetime4);      
  119.          
  120.         ?>
  121.  
  122.         <?php if($fila->Nombre === $row->Nombre) {?>
  123.          <?php if(($interval->format('%R%a')<=2)) { ?>
  124.  
  125.           Hace menos de dos dias
  126.  
  127.          <?php } elseif (($interval->format('%R%a')>2)) { ?>
  128.  
  129.            hace <p><?php  echo $interval->format('%R%a'); ?></p>dias
  130.            
  131.          <?php } ?>
  132.  
  133.          <?php } ?>
  134.  
  135.            
  136.             <?php } ?>
  137.            
  138.           </td>
  139.             <td class="info">
  140.             <?php
  141.             foreach($result1->result() as $row){ ?>
  142.  
  143.                    <?php
  144.           $datetime1 = date_create($row->Fecha_Llamado);
  145.           $datetime2 = date_create(DATE('Y-m-d'));
  146.           $interval = date_diff($datetime1, $datetime2);
  147.          
  148.           ?>
  149.  
  150.        <?php
  151.  
  152.             $row->CompromisoPago;          
  153.             $Pago = str_replace('/', '-', $row->CompromisoPago);
  154.             $date = date_create_from_format('Y-m-d',$row->Fecha_Llamado);
  155.             $fecha2 = date_format($date, 'd-m-Y');
  156.  
  157.           $datetime3 = date_create($Pago);
  158.           $datetime4 = date_create(DATE('d-m-Y'));
  159.           $interval2 = date_diff($datetime3, $datetime4);
  160.            
  161.         ?>
  162.  
  163.         <?php if($fila->Nombre === $row->Nombre) {?>
  164.          <?php if(($interval2->format('%R%a')>0  )) { ?>
  165.  
  166.           hace <p><?php  echo $interval2->format('%R%a'); ?></p>dias
  167.  
  168.          <?php } elseif( $interval2->format('%R%a')<=0 ) { ?>
  169.          Compromiso Pago
  170.          <?php }  ?>    
  171.  
  172.          <?php } ?>            
  173.             <?php } ?>
  174.            
  175.           </td>
  176.        
  177.         </tr>
  178.        
  179.     </tbody>
  180.  
  181.        <?php
  182.     }
  183.     ?>
  184.       <?php
  185.   }
  186.   ?>    
  187.  
  188. </table>

que es lo que esto hace, les cuento.. tengo una en la cual realizo una busqueda, ya sea por sucursal, por rut o por tipogestion ( la cual se maneja segun rangos de dias).
bueno una vez se realiza el filtro se muestran los datos en la tabla que viene de la tabla A, esta tabla tiene un campo llamado estado y ese lo traigo desde una tabla b.
el tema es que al tener que recorrer 2 arreglos el sistema se esta relentizando.

Etiquetas: codeigniter, fecha, formulario, select, sql, tabla, variable
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:09.