Jump to content
Fórum Script Brasil
  • 0

Sobrecarga no servidor PHP


Fabio Brito

Question

Bom dia pessoal,

meu nome é Fabio Brito e gostaria da ajuda de vocês quanto a um problema que estou enfrentando com uma aplicação hospedada na Locaweb.

Meu site é de uma imobiliária, portanto utiliza de PHP e MYSQL para fazer buscas de imóveis no site.

O problema é que a Locaweb esta ameaçando tirar meu site do ar pois está causando sobre carga no servidor compartilhado deles e alegam que o problema está em nosso código. Meu site tem em torno de 15Mil acessos mês então este não é o problema.

Abaixo segue o código PHP da página mais requisitada do site:

<? include("inc/config.php"); ?>
<?
    /* PAGINACAO */
  
    $_SESSION['regs_pp']    = 6; 
  
    !isset($_GET["pg"]) ? $pg=1 : $pg=$_GET["pg"];
    $comeca_em = ($pg-1)*$_SESSION['regs_pp'];    
    
    // paramentros para navegacao entre os resultados
    $param = '';
    if( isset($_GET['favoritos']) )                                     { $param.="favoritos=true&"; }
    if( isset($_GET['lancamentos']) && $_GET['lancamentos']=='true' )     { $param.="lancamentos=true&"; }
    if( isset($_GET['estagio']) )                                         { $param.="estagio=".$_GET['estagio']."&"; }
    if( isset($_GET['finalidade']) )                                     { $param.="finalidade=".$_GET['finalidade']."&"; }
    if( isset($_GET['tipo']) )                                             { $param.="tipo=".$_GET['tipo']."&"; }
    if( isset($_GET['busca_cidade']) )                                    { $param.="busca_cidade=".urlencode($_GET['busca_cidade'])."&"; }
    if( isset($_GET['dormitorio']))                                         { $param.="dormitorio=".$_GET['dormitorio']."&"; }
    if( isset($_GET['garagem']) )                                         { $param.="garagem=".$_GET['garagem']."&"; }
    if( isset($_GET['de1']) )                                            { $param.="de1=".$_GET['de1']."&"; }
    if( isset($_GET['de2']) )                                            { $param.="de2=".$_GET['de2']."&"; }
    if( isset($_GET['ate1']) )                                            { $param.="ate1=".$_GET['ate1']."&"; }
    if( isset($_GET['ate2']) )                                            { $param.="ate2=".$_GET['ate2']."&"; }
    if( isset($_GET['preço']) )                                            { $param.="preço=".$_GET['preço']."&"; }
    if( isset($_GET['preco2']) )                                        { $param.="preco2=".$_GET['preco2']."&"; }
    if( !empty($_GET['area']) )                                         { $param.="area=".$_GET['area']."&"; }
    if( !empty($_GET['o_field']) )                                         { $param.="o_field=".$_GET['o_field']."&"; }
    if( !empty($_GET['o_ad']) )                                         { $param.="o_ad=".$_GET['o_ad']."&"; }
    // o param de pagnacao dos bairros esta no loop do select


    /* 
      BUSCA
      ---------------------------------------------------------------------
    */        

    $sql_busca="";
    
    // PALAVRA-CHAVE        
    if ( !empty($_GET['codigo']) && is_numeric($_GET['codigo']) ) { 
        die("&lt;script>window.location='detalhes.php?codigo=".$_GET['codigo']."'</script>");
    }
    
    else if ( !empty($_GET['placa']) && is_numeric($_GET['placa']) ) { 
        die("&lt;script>window.location='detalhes.php?codigo=".$_GET['placa']."'</script>");
    }
    
    else
    {    
    
        // CLASSIFICACAO  
             if (!empty($_GET["finalidade"]) && $_GET["finalidade"]=='venda')            { $sql_busca .= "  AND INSTR(imo.STATUS,'VENDA')>0 "; }  
        else if (!empty($_GET["finalidade"]) && $_GET["finalidade"]=='locacao')            { $sql_busca .= " AND INSTR(imo.STATUS,'LOCAÇÃO')>0 "; }  
        //else if (!empty($_GET["finalidade"]) && $_GET["finalidade"]=='vl')            { $sql_busca .= " "; }  

        // ESTAGIO OBRA
        if(!empty($_GET['estagio'])) { $vfiltros[] = array('estagio',$_GET['estagio']); }
        if ( !empty($_GET['estagio']) && $_GET['estagio']==2 )      { $sql_busca.=" AND imo.ESTAGIO_OBRA='Lançamento' OR imo.ESTAGIO_OBRA='Revenda'";  }
        if ( !empty($_GET['estagio']) && $_GET['estagio']==4 )      { $sql_busca.=" AND imo.ESTAGIO_OBRA='Pronto' OR imo.ESTAGIO_OBRA='Revenda' OR imo.ESTAGIO_OBRA='Lançamento'"; }

        // TIPO DE IMOVEL
        if ( !empty($_GET['tipo']) ) {
            $sql_busca.=" AND imo.CODIGO_CT=".$_GET['tipo'];
            $vfiltros[] = array('tipo',$_GET['tipo']);
        }
        
        // CIDADE
        if ( !empty($_GET['busca_cidade']) ) {
            $sql_busca.=" AND imo.cidade='".urldecode($_GET['busca_cidade'])."' ";
            $vfiltros[] = array('busca_cidade',$_GET['busca_cidade']);
        }
        
        // AREA
        if ( !empty($_GET['area']) ) {
            $v_area = split('-',$_GET['area']);
            $sql_busca.=" AND (imo.AREA_PRIVATIVA>=".$v_area[0]." and  imo.AREA_PRIVATIVA<=".$v_area[1].") ";
            $vfiltros[] = array('area',$_GET['area']);
        }

        // preço
        if ( !empty($_GET['preço']) ) {
            $v_preco = split('-',$_GET['preço']);
            $sql_busca.=" AND (imo.VLR_VENDA>=".($v_preco[0]*1000)." and  imo.VLR_VENDA<=".($v_preco[1]*1000).") ";
            $vfiltros[] = array('preço',$_GET['preço']);
        }
        
        // preço
        if ( !empty($_GET['preco2']) ) {
            $v_preco = split('-',$_GET['preco2']);
            $sql_busca.=" AND (imo.VALOR_ALUGUEL>=".($v_preco[0])." and  imo.VALOR_ALUGUEL<=".($v_preco[1]).") ";
            $vfiltros[] = array('preco2',$_GET['preco2']);
        }
        
        
        // FAVORITOS
        if ( !empty($_GET['favoritos']) ) 
        {
          $sqlfav = "";
          if ( isset($_COOKIE['favoritos']) )     
          { 
              $cods=split(",",$_COOKIE['favoritos']);
              //print_r($cods);
              $sqlfav .=" AND (";
              for($i=count($cods)-1;$i>=0;$i--){
                  if(trim($cods[$i])!='') {
                      $sqlfav .= " imo.CODIGO=".$cods[$i]; 
                      if(count($cods)>0) { $sqlfav .= " OR "; }
                  }
              }
              $sqlfav = rtrim($sqlfav, "OR ");
              $sqlfav .=" )";
              //echo $sqlfav;
          }
          $sql_busca .= $sqlfav;
          if (str_replace(" ","",$sqlfav)!="AND()") $sql_busca .= $sqlfav; else $sql_busca = ' AND 1=2 ';
        }                        

        // BAIRROS SELECIONADOS
        if ( !empty($_GET['bairros']) ) { 
            $total = count($_GET['bairros']);
            $sql_busca .= " AND ("; 
                foreach ($_GET['bairros'] as $value) 
                {
                    $sql_busca .= " imo.BAIRRO IN ('". urldecode($value) ."') ";
                    $total--;
                    if ($total!=0) { $sql_busca .= " OR "; }
                    
                    //PAGINACAO
                    $param.="bairros[]=".urlencode($value)."&";
                    
                    //filtros
                    $vfiltros[] = array('bairros[]',$value);
        
                }    
            $sql_busca .= " ) "; 
        }
            
        // DORM
        if (!empty($_GET['dormitorio']) && $_GET['dormitorio']==1) { $sql_busca .= " AND imo.DORMITORIO=1"; }     
        if (!empty($_GET['dormitorio']) && $_GET['dormitorio']==2) { $sql_busca .= " AND imo.DORMITORIO=2"; }     
        if (!empty($_GET['dormitorio']) && $_GET['dormitorio']==3) { $sql_busca .= " AND imo.DORMITORIO=3"; }     
        if (!empty($_GET['dormitorio']) && $_GET['dormitorio']==4) { $sql_busca .= " AND imo.DORMITORIO>=4"; }     
        if (!empty($_GET['dormitorio'])) { 
            $vfiltros[] = array('dormitorio',$_GET['dormitorio']);
        }     

        // GARAGEM            
        if (!empty($_GET['garagem']) && $_GET['garagem']==1) { $sql_busca .= " AND imo.QUANTITADE_GAR>=1"; }     
        if (!empty($_GET['garagem']) && $_GET['garagem']==2) { $sql_busca .= " AND imo.QUANTITADE_GAR>=2"; }     
        if (!empty($_GET['garagem']) && $_GET['garagem']==3) { $sql_busca .= " AND imo.QUANTITADE_GAR>=3"; }     
        if (!empty($_GET['garagem']) && $_GET['garagem']==4) { $sql_busca .= " AND imo.QUANTITADE_GAR>=4"; } 
        if (!empty($_GET['garagem'])) { 
            $vfiltros[] = array('garagem',$_GET['garagem']);
        } 

        // FAIXA DE PREÇO SELECIONADA        
        if( !empty($_GET['finalidade']) && $_GET['finalidade']=='locacao' ) {
            if (!empty($_GET['de2'])) { $sql_busca .= " AND imo.VALOR_ALUGUEL>=".$_GET['de2']." "; }     
            if (!empty($_GET['ate2'])) { $sql_busca .= " AND imo.VALOR_ALUGUEL<=".$_GET['ate2']." ";  }     
        }else{
            if (!empty($_GET['de1'])) { $sql_busca .= " AND imo.VLR_VENDA>=".$_GET['de1']." "; }     
            if (!empty($_GET['ate1'])) { $sql_busca .= " AND imo.VLR_VENDA<=".$_GET['ate1']." ";  }     
        }

    }
    /* 
      END BUSCA
      ---------------------------------------------------------------------
    */        
  

  
    /* 
      ORDENAR OS RESULTADOS
      ---------------------------------------------------------------------
    */
    if(isset($_GET["ordem"])) { 
        $_SESSION["ordem"]==$_GET["ordem"] ? $_SESSION["ordem"] = $_SESSION["ordem"] : $_SESSION["ordem"] = $_GET["ordem"]; 
    } elseif(!isset($_SESSION["ordem"])) { 
        $_SESSION["ordem"] = "VLR_VENDA DESC, VALOR_ALUGUEL DESC"; 
    }
  
    /* 
      ---------------------------------------------------------------------
    */

    $sql = "SELECT DISTINCT 
                imo.PLACA, imo.CODIGO, imo.CODIGO_CT, cat.CATEGORIA, cat.GRUPO, imo.STATUS, imo.BAIRRO, imo.CIDADE,
                imo.DORMITORIO AS DORM, imo.ESTAGIO_OBRA,
                imo.SUITE AS SUITE, 
                imo.QUANTITADE_GAR AS VAGA, 
                imo.LANCAMENTO, 
                imo.AREA_PRIVATIVA AS AREA,  
                imo.AREA_TOTAL,  
                imo.VLR_VENDA,
                imo.VALOR_ALUGUEL,
                imo.EMPREENDIMENTO
            FROM CADIMO imo  
                LEFT JOIN CADCAT cat ON cat.CODIGO=imo.CODIGO_CT 
                LEFT JOIN CADCLI cli ON cli.CODIGO_C=imo.CODIGO_C
            WHERE    
                imo.VER_WEB='Sim'
                AND (imo.STATUS='VENDA' OR imo.STATUS='LOCAÇÃO')
                $sql_busca
            ORDER BY ".$_SESSION['ordem']."
            ";
    
    //echo $sql;

    $sql_limit = " LIMIT ".$comeca_em.",".$_SESSION['regs_pp'];
    $rst        = mysql_query($sql) or die(mysql_error());
    $total_reg = mysql_num_rows($rst);


    /* 
      TITULO NAVEGADOR
      ---------------------------------------------------------------------
    */    
    
    $tit_browser  = " ";
    $tit_h="";

         if (!empty($_GET["finalidade"]) && $_GET["finalidade"]=='locacao')        { $tit_browser .= 'Imóveis para alugar ';}  
    else if (!empty($_GET["finalidade"]) && $_GET["finalidade"]=='venda')        { $tit_browser .= 'Imóveis à venda '; }  
    else if (!empty($_GET["favoritos"]) )                                        { $tit_browser .= 'Imóveis Favoritos '; }  
    else if ( !empty($_GET['estagio']) && $_GET['estagio']==1 )                  { $tit_browser .=" Entrega Até 1 Ano "; }
    else if ( !empty($_GET['estagio']) && $_GET['estagio']==2 )                  { $tit_browser .=" Lançamentos"; }
    else if ( !empty($_GET['estagio']) && $_GET['estagio']==3 )                  { $tit_browser .=" Pré-Lançamentos"; }
    else if ( !empty($_GET['estagio']) && $_GET['estagio']==4 )                  { $tit_browser .=" Prontos / Usados"; }
    else                                                                         { $tit_browser .= 'Imóveis '; }

    if (!empty($_GET["tipo"])) 
    {
        $sqlc = mysql_query("SELECT CATEGORIA FROM CADCAT WHERE CODIGO=".$_GET["tipo"]);
        if(mysql_num_rows($sqlc)>0) 
        { 
            $st = mysql_fetch_array($sqlc);
            $tit_browser .=' '.Maiusculo($st["CATEGORIA"]); 
        }
    }
    if (!empty($_GET["busca_cidade"])) 
    {
            $tit_browser .=' em '.urldecode(Maiusculo($_GET["busca_cidade"])); 
    }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <? include("inc/layout/meta.php"); ?>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name="description" content="<?= $tit_browser; ?> - <?= CFG_TITLE ?>" />
    <meta name="keywords" content="imobiliaria porto alegre, imoveis porto alegre, fael imoveis" />      
    <meta name="classification" content="imoveis , imobiliaria">  
    <title><?= $tit_browser; ?> - <?= CFG_TITLE; ?></title>
    <link href="inc/css/styles.css" rel="stylesheet" type="text/css" />
    &lt;script type="text/javascript" src="inc/js/jquery.js"></script>
    &lt;script type="text/javascript" src="inc/js/jquery.ui.js"></script>
    &lt;script type="text/javascript" src="inc/js/jquery.cycle.js"></script>
    &lt;script type="text/javascript" src="inc/js/jquery.tooltip.js"></script>
    &lt;script type="text/javascript" src="inc/js/scripts.js"></script>
    &lt;script type="text/javascript" src="inc/js/validaform.js"></script>    
</head>

<body>

<div id="container">
  
  <? include("inc/layout/header.php"); ?>
  
  <? include("inc/layout/busca.php"); ?>
  
  <? include("inc/layout/animacao.php"); ?>
  
    
  
  <div id="mainContent">
    
    <div id="leftContent">
      <? include("inc/layout/filtro.php"); ?>
      <? include("inc/layout/servicos.php"); ?>
    </div><!-- end #leftContent -->
    
    <div id="rightContent">
      
      <h1><?php echo $tit_browser; ?></h1>
      
      <div class="paginacao">
        <!--<p class="left">Total de imóveis encontrados: <strong><?= $total_reg; ?></strong></p>-->
        <? if($total_reg>0) { ?>
            <select onchange="window.location='<?=current_page()?>?<?=$param?>ordem='+this.value">
            <option value="">Ordenar por:</option>
                
                <optgroup label="Preço">
                <? if ($_GET['finalidade']=='locacao') { ?>
                <option value="VALOR_ALUGUEL ASC" <?= $_SESSION["ordem"]=="VALOR_ALUGUEL ASC" ? 'selected="selected"' : '' ?> >Menor Preço</option>
                <option value="VALOR_ALUGUEL DESC" <?= $_SESSION["ordem"]=="VALOR_ALUGUEL DESC" ? 'selected="selected"' : ''  ?>>Maior Preço</option>
                <? } else { ?>
                <option value="VLR_VENDA ASC" <?= $_SESSION["ordem"]=="VLR_VENDA ASC" ? 'selected="selected"' : '' ?> >Menor Preço</option>
                <option value="VLR_VENDA DESC" <?= $_SESSION["ordem"]=="VLR_VENDA DESC" ? 'selected="selected"' : ''  ?>>Maior Preço</option>
                <? } ?>
                </optgroup>
                
                <optgroup label="Área">    
                <option value="imo.AREA_TOTAL ASC" <?= $_SESSION["ordem"]=="imo.AREA_TOTAL ASC" ? 'selected="selected"' : ''  ?>>Menor Área</option>
                <option value="imo.AREA_TOTAL DESC" <?= $_SESSION["ordem"]=="imo.AREA_TOTAL DESC" ? 'selected="selected"' : ''  ?>>Maior Área</option>
                </optgroup>
                
                <optgroup label="Dormitórios">    
                <option value="imo.DORMITORIO ASC" <?= $_SESSION["ordem"]=="imo.DORMITORIO ASC" ? 'selected="selected"' : ''  ?>>Menos Dormitórios</option>
                <option value="imo.DORMITORIO DESC" <?= $_SESSION["ordem"]=="imo.DORMITORIO DESC" ? 'selected="selected"' : ''  ?>>Mais Dormitórios</option>
                </optgroup>
            </select>
        <? } ?>     
      </div><!-- end .paginacao -->
      
      <div class="imoveis">
      <?
      if($total_reg>0) {
          $i=0;
          $rs = mysql_query($sql." ".$sql_limit) or die(mysql_error());        
          while($imovel=mysql_fetch_array($rs)) {
              $i++; $quebra =  ($i%2==0) ? ' quebra' : '';
              include("inc/layout/box.php");
          }
      }else if( !empty($_GET["favoritos"]) && $total_reg==0 ){ 
          echo "<br />Você não possui imóveis salvos como favorito. <br />"; 
      }else{ 
          echo "<br />Não existem imóveis para o filtro selecionado. Refaça seus filtros e tente novamente.<br />"; 
      }      
      ?>
      </div><!-- end .imoveis -->
      
      <? if($total_reg>6) { ?>
      <div class="paginacao paginacao-bottom">
        <!--<p class="left">Total de imóveis encontrados: <strong><?= $total_reg; ?></strong></p>-->
        <p class="right"><?= escreve_paginacao($param,$pg,$_SESSION['regs_pp'],$total_reg); ?></p>
      </div><!-- end .paginacao -->
      <? } ?>
      
    </div><!-- end #rightContent -->
    
  </div><!-- end #mainContent -->
    
</div><!-- end #container -->

<? include("inc/layout/footer.php"); ?>
</body>
</html>

Se alguém puder me ajudar ficarei muito agradecido.

Obrigado a todos.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0
Tem que ver nos logs, qual página está dando esta sobre carga no servidor....

Ai que esta o problema nos logs aparece isso:

Every 2.0s: ps u -u fael2                                                                                                             Tue Jan  3 11:14:24 2012

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
fael2    20019  0.0  0.0  85244  1608 ?        S    11:13   0:00 sshd: fael2@pts/1
fael2    20020  0.0  0.0  66292  1764 pts/1    Ss   11:13   0:00 -bash
fael2    20281  0.4  0.0 246712 15988 ?        S    11:14   0:00 /usr/bin/php-cgi
fael2    20294  0.0  0.0  63544  1148 pts/1    S+   11:14   0:00 watch ps u -u fael2
fael2    20305  0.9  0.0 246984 16156 ?        S    11:14   0:00 /usr/bin/php-cgi
fael2    20325  0.8  0.0 246984 16156 ?        S    11:14   0:00 /usr/bin/php-cgi
fael2    20328  1.8  0.1 254968 24920 ?        S    11:14   0:00 /usr/bin/php-cgi
fael2    20336  1.6  0.0 247396 17120 ?        S    11:14   0:00 /usr/bin/php-cgi
fael2    20340  2.3  0.0 246984 16156 ?        S    11:14   0:00 /usr/bin/php-cgi
fael2    20348  9.0  0.0 246984 16152 ?        S    11:14   0:00 /usr/bin/php-cgi
fael2    20351  0.0  0.0 246984 16260 ?        S    11:14   0:00 /usr/bin/php-cgi
fael2    20353  0.0  0.0  65592  1024 pts/1    R+   11:14   0:00 ps u -u fael2

Só " /usr/bin/php-cgi " não diz a página.

Valeu!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...