Ir para conteúdo
Fórum CódigoFonte.net
Entre para seguir isso  
fabiobritors

Sobrecarga no servidor PHP

Recommended Posts

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&#231;o']) ) { $param.="pre&#231;o=".$_GET['pre&#231;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&#199;&#195;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&#231;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&#231;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&#231;o

if ( !empty($_GET['pre&#231;o']) ) {

$v_preco = split('-',$_GET['pre&#231;o']);

$sql_busca.=" AND (imo.VLR_VENDA>=".($v_preco[0]*1000)." and  imo.VLR_VENDA<=".($v_preco[1]*1000).") ";

$vfiltros[] = array('pre&#231;o',$_GET['pre&#231;o']);

}


// pre&#231;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&#199;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&#199;&#195;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&#243;veis para alugar ';}  

else if (!empty($_GET["finalidade"]) && $_GET["finalidade"]=='venda') { $tit_browser .= 'Im&#243;veis &#224; venda '; }  

else if (!empty($_GET["favoritos"]) ) { $tit_browser .= 'Im&#243;veis Favoritos '; }  

else if ( !empty($_GET['estagio']) && $_GET['estagio']==1 )	{ $tit_browser .=" Entrega At&#233; 1 Ano "; }

else if ( !empty($_GET['estagio']) && $_GET['estagio']==2 )	{ $tit_browser .=" Lan&#231;amentos"; }

else if ( !empty($_GET['estagio']) && $_GET['estagio']==3 )	{ $tit_browser .=" Pr&#233;-Lan&#231;amentos"; }

else if ( !empty($_GET['estagio']) && $_GET['estagio']==4 )	{ $tit_browser .=" Prontos / Usados"; }

else   { $tit_browser .= 'Im&#243;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&#243;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&#231;o">

<? if ($_GET['finalidade']=='locacao') { ?>

<option value="VALOR_ALUGUEL ASC" <?= $_SESSION["ordem"]=="VALOR_ALUGUEL ASC" ? 'selected="selected"' : '' ?> >Menor Pre&#231;o</option>

<option value="VALOR_ALUGUEL DESC" <?= $_SESSION["ordem"]=="VALOR_ALUGUEL DESC" ? 'selected="selected"' : ''  ?>>Maior Pre&#231;o</option>

<? } else { ?>

<option value="VLR_VENDA ASC" <?= $_SESSION["ordem"]=="VLR_VENDA ASC" ? 'selected="selected"' : '' ?> >Menor Pre&#231;o</option>

<option value="VLR_VENDA DESC" <?= $_SESSION["ordem"]=="VLR_VENDA DESC" ? 'selected="selected"' : ''  ?>>Maior Pre&#231;o</option>

<? } ?>

</optgroup>


<optgroup label="&#193;rea">

<option value="imo.AREA_TOTAL ASC" <?= $_SESSION["ordem"]=="imo.AREA_TOTAL ASC" ? 'selected="selected"' : ''  ?>>Menor &#193;rea</option>

<option value="imo.AREA_TOTAL DESC" <?= $_SESSION["ordem"]=="imo.AREA_TOTAL DESC" ? 'selected="selected"' : ''  ?>>Maior &#193;rea</option>

</optgroup>


<optgroup label="Dormit&#243;rios">

<option value="imo.DORMITORIO ASC" <?= $_SESSION["ordem"]=="imo.DORMITORIO ASC" ? 'selected="selected"' : ''  ?>>Menos Dormit&#243;rios</option>

<option value="imo.DORMITORIO DESC" <?= $_SESSION["ordem"]=="imo.DORMITORIO DESC" ? 'selected="selected"' : ''  ?>>Mais Dormit&#243;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&#234; n&#227;o possui im&#243;veis salvos como favorito. <br />";

}else{

echo "<br />N&#227;o existem im&#243;veis para o filtro selecionado. Refa&#231;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&#243;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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo o que posso te dizr a pricipio é o seguinte, existem sites qeu medem a velocidade doe outros sites ou seja a velocidade a partir da solicitação ate a resposta acredito eu

então vc deve fazer esse teste em um desses sites pra poder confirmar o que o povo da localweb falou posteriormente eu surgiro que vc teste a velocidade de cada link, pois

assim vc pode descobrir que rotina faz o teu sistema ficar mais lento e assim revidar essa parte do codigo.

Me da a impressão qeu vc acha que algum comando ou talvez alguma função emparticular é que esta atrasando o processamento, mas nao é isso, se isso ocorre

muito provavelmente seja um problema de rotinas mal elaboradas uma vez que provavelmente esse codigo trabalhe com quantidades muito grande de informaçãi

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Fabio,

a sua classe ou script de conexão com o banco de dados está usando Singleton ? Caso não, pode ser um dos possíveis problemas, afinal um mesmo usuário abriria várias conexões com o banco, recomendaria (se conselho fosse bom... rsrs) utilizar uma classe com PDO ou algo similar.

Como está executando um select muito grande e exigindo um processamento relativamente alto do banco isso impacta diretamente na locaweb uma vez que o banco fica no servidor deles. Aqui na empresa havia um sistema em que o select era gigante demorando de 7 a 20 segundos pra retornar e consumia 100% do processamento do banco. Talvez um refatoramento já melhore.

Enfim, são alguns problemas possíveis de ocorrer.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

Estarei ministrando um curso de PHP ORIENTADO A OBJETOS pelo site http://stoodos.com.b...ulate/course/99 o curso custa R$ 30,00 realmente é muito barato, entre lá e confirme sua presença para fevereiro, já estamos na segunda turma e realmente o aproveitamento está sendo muito bom. No curso ensino desde o php para iniciantes até o php orientado a objetos.

Abaixo um pouco sobre o que você aprenderá neste curso.

1 - Introdução ao PHP

1.1 História do PHP

1.2 O PHP e a sua área de aplicação

2 - Ambiente

1.1 Escolhendo as ferramentas para trabalhar

1.2 Preparando o ambiente

1.3 Testando o ambiente

3 - Aprendendo PHP do básico ao avançado

1.1 Delimitadores

1.2 Variáveis

1.3 Constantes

1.4 Variáveis globais

1.5 Operadores aritméticos

1.6 Operadores de comparação

1.7 Operadores lógicos

1.8 Estruturas de controle (if, swicht)

1.9 Laços de repetição (for, foreach, while, do while)

1.10 Resources para banco de dados

1.11 Functions

1.12 Algumas funções pré-definidas do php

4 - Aprendendo PHP Orientado a Objetos

1.1 Conceito de Orientação a Objetos

1.2 Conceito de classes e objetos

1.3 Criando a primeira classe

1.4 Métodos e Propriedades

1.5 Herança

1.6 Polimorfismo

1.7 Abstração

1.8 Modificadores de acesso

1.9 Palavra reservada self::

1.10 Constantes no PHP OO

1.11 Classe abstrata

1.12 Classe final

1.12 Método abstrato

1.13 Método final

1.14 Manipulação de métodos e classes

1.15 Associação e Agregação

1.16 Acesse banco de dados com PDO

1.17 Projeto final do curso

************************************************************

A cada aula que for realizada o aluno irá receber o material de estudo onde conterá, o material apresentado na aula sendo eles:

1 - Slides do curso com a matéria aprendida.

2 - Fontes do curso, exemplos de como funciona o que aprendeu.

3 - IDE de desenvolvimento.

4 - Ajuda na instalação do ambiente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×
×
  • Criar Novo...