Siga Fael 0 Denunciar post Postado Janeiro 3, 2012 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['preco']) ) { $param.="preco=".$_GET['preco']."&"; } 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("<script>window.location='detalhes.php?codigo=".$_GET['codigo']."'</script>"); } else if ( !empty($_GET['placa']) && is_numeric($_GET['placa']) ) { die("<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']); } // PRECO if ( !empty($_GET['preco']) ) { $v_preco = split('-',$_GET['preco']); $sql_busca.=" AND (imo.VLR_VENDA>=".($v_preco[0]*1000)." and imo.VLR_VENDA<=".($v_preco[1]*1000).") "; $vfiltros[] = array('preco',$_GET['preco']); } // PRECO 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'] ) ) { $dormitorio = (int)$_GET['dormitorio']; if( $dormitorio==4 ) $dormitorio = '>=4'; else $dormitorio = '='.$dormitorio; $sql_busca .= ' AND imo.DORMITORIO'.$dormitorio; } // GARAGEM if( !empty($_GET['garagem'] ) ) { $garagem = (int)$_GET['garagem']; if( $garagem==4 ) $garagem = '>=4'; else $garagem = '='.$garagem; $sql_busca .= ' AND imo.QUANTITADE_GAR'.$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" /> <script type="text/javascript" src="inc/js/jquery.js"></script> <script type="text/javascript" src="inc/js/jquery.ui.js"></script> <script type="text/javascript" src="inc/js/jquery.cycle.js"></script> <script type="text/javascript" src="inc/js/jquery.tooltip.js"></script> <script type="text/javascript" src="inc/js/scripts.js"></script> <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. Compartilhar este post Link para o post Compartilhar em outros sites
rebortec 0 Denunciar post Postado Janeiro 3, 2012 Boas Já pesquisou e tentou fazer cache em disco? Abc Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 3, 2012 15mil acessos realmente parece "muito" para um servidor compartilhado. DISTINCT tem a fama de ser LENTO. rodando esse SQL q você forma ai, direto na base, qnto tempo ele demora para ser processado ? //echo $sql; rode lá e volte informando. já ouviu falar de VIEWs ? Compartilhar este post Link para o post Compartilhar em outros sites
Siga Fael 0 Denunciar post Postado Janeiro 3, 2012 Willian, obrigado pela resposta. Rodei aqui local e respondeu em 0.144s att Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Janeiro 3, 2012 O problema não é acesso, mais sim seu sql ta consumindo recurso excessivo do servidor. Seu sql ta mau feito, para evitar o site ser retirado, monte este sql de filtro direto no loop LEFT JOIN CADCAT cat ON cat.CODIGO=imo.CODIGO_CT LEFT JOIN CADCLI cli ON cli.CODIGO_C=imo.CODIGO_C temporariamente e posta la no fórum de modelagem que a galera te ajuda melhorar. Compartilhar este post Link para o post Compartilhar em outros sites
Siga Fael 0 Denunciar post Postado Janeiro 3, 2012 WDuarte, infelizmente não tenho muito conhecimento, poderia me ajudar como proceder? Obrigado mesmo! Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Siga Fael 0 Denunciar post Postado Janeiro 3, 2012 WDUarte, outra coisa, o banco mysql esta fora do servidor apache/php e o que está dando pico de uso de CPU é o servidor apache/php. Mesmo assim será que é por causa do mysql? Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 3, 2012 existem alguns trechos q podem ser melhor escritos, apesar de não aparentemente influencionarem sob a performance. por exemplo: 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"; } é exatamente o mesmo que: if( !empty($_GET['dormitorio'] ) ) { $dormitorio = (int)$_GET['dormitorio']; if( $dormitorio==4 ) $dormitorio = '>=4'; else $dormitorio = '='.$dormitorio; $sql_busca .= ' AND imo.DORMITORIO'.$dormitorio; } Nestes trechos do select: <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> eu encapsularia em uma função: <?php function selected( $value, $selected ){ return $value==$selected ? ' selected="selected"' : ''; } ?> <option value="VALOR_ALUGUEL ASC"<?php echo selected( $_SESSION['ordem'], 'VALOR_ALUGUEL ASC' ); ?>>Menor Preço</option> <option value="VALOR_ALUGUEL DESC"<?php echo selected( $_SESSION['ordem'], 'VALOR_ALUGUEL DESC' ); ?>>Maior Preço</option> note como o código ficou mais limpo, e como usei aspas simples, visando melhor performance. Enfim.. pegando trecho por trecho, existem vários detalhes desse tipo que podem ser melhorados. Sugiro que você vá fazendo, e mostrando como ficou, ai continuamos com a otimização. Compartilhar este post Link para o post Compartilhar em outros sites
Siga Fael 0 Denunciar post Postado Janeiro 3, 2012 Willian, coloquei o primeiro código e já deu erro aqui na aplicação. Vi que o código pode ser melhor escrito, mais "limpo", mas será que isso vai fazer o server apache/php consumir dessa maneira? Every 2.0s: ps u -u fael2 Tue Jan 3 14:37:10 2012 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND fael2 3563 0.0 0.0 85204 1676 ? S 11:44 0:00 sshd: fael2@pts/1 fael2 3565 0.0 0.0 66296 1764 pts/1 Ss 11:44 0:00 -bash fael2 23043 0.0 0.0 63408 1012 pts/1 S+ 14:37 0:00 watch ps u -u fael2 fael2 23087 4.0 0.0 253364 23244 ? S 14:37 0:00 /usr/bin/php-cgi fael2 23089 4.0 0.0 247120 17100 ? S 14:37 0:00 /usr/bin/php-cgi fael2 23090 4.0 0.0 247376 17092 ? S 14:37 0:00 /usr/bin/php-cgi fael2 23091 4.0 0.0 247376 17088 ? S 14:37 0:00 /usr/bin/php-cgi fael2 23092 6.0 0.0 252660 22488 ? S 14:37 0:00 /usr/bin/php-cgi fael2 23094 4.0 0.0 246984 16740 ? S 14:37 0:00 /usr/bin/php-cgi fael2 23095 3.5 0.0 246984 16764 ? S 14:37 0:00 /usr/bin/php-cgi fael2 23096 3.5 0.0 246984 16768 ? S 14:37 0:00 /usr/bin/php-cgi fael2 23100 0.0 0.0 65592 1024 pts/1 R+ 14:37 0:00 ps u -u fael2 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 3, 2012 qual foi o erro ? cara... performance é juntar pedaços. Otimizar partes, cada parte otimizada contribui para uma melhor performance. Voltando ao SQL, se você tirar o DISTINCT, responde em qnto tempo a consulta ? Compartilhar este post Link para o post Compartilhar em outros sites
Siga Fael 0 Denunciar post Postado Janeiro 3, 2012 Deu erro aqui: if( !empty($_GET['dormitorio'] ) { <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $dormitorio = (int)$_GET['dormitorio']; if( $dormitorio==4 ) $dormitorio = '>=4'; else $dormitorio = '='.$dormitorio; $sql_busca .= ' AND imo.DORMITORIO'.$dormitorio; } Retirei o DISTINCT e ficou na mesma, agora variando de 0.083s - 0.089s Estou rodando esse teste de performace no mySQL local e não la do site, pode ser assim? Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Janeiro 3, 2012 Amigo, como você bem disse o servidor MySQL na LocaWeb é separado do servidor WEB, e o que está consumindo muitos recursos neste caso é o PHP, então esquece o SQL agora. Eu já vi muitos scripts de imobiliária bem "porcos" por aí, inclusive já tive que refazer vários. Geralmente o pessoal costuma comprar esses scripts no Mercado Livre a preço de banana e dá nisso. hehe Algo muito comum nesses scripts e que consome muitos recursos é gerar os thumbnails (miniaturas) das fotos dos imóveis em tempo de execução, isso é péssimo se tratando de desempenho e consome muito processamento do servidor. Como eu não consegui ver no código que você postou a parte que exibe os thumbnails dos imóveis, sugiro que você dê uma analisada nesta parte. Qualquer coisa posta aí. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 3, 2012 faltou um parenteses: if( !empty($_GET['dormitorio'] ) ) Estou rodando esse teste de performace no mySQL local e não la do site, pode ser assim?não.A menos que o seu local representasse fielmente as condições do site (quantidade de registros, maquinas, acessos...) rode no site, só assim teremos idéias reais do problema. Informe os valores com e sem DISTINCT rodando remoto. Compartilhar este post Link para o post Compartilhar em outros sites
Siga Fael 0 Denunciar post Postado Janeiro 3, 2012 Willian agora consegui rodar com aquela alteração, já alterei meu código la em cima. Leozitho, abaixo seguem os phps que tratam das fotos: Este é o include box.php <? //Foto if($imovel["CODIGO_CT"]==21){ $foto = "vista.imobi/fotos/no_foto_terrenos.jpg" ; }else{ $foto = "vista.imobi/fotos/no_foto_g.jpg" ; } $f=mysql_query("SELECT FILE_PATH_P, FILE_PATH, DESTAQUE_WEB, DESCRICAO, CODIGO_I FROM CDIMIM WHERE VER_WEB='Sim' AND CODIGO=".$imovel['CODIGO']." ORDER BY DESTAQUE_WEB DESC, DESCRICAO, CODIGO_I LIMIT 1"); if (mysql_num_rows($f)) { if ($imovel["CODIGO_CT"]!=21) { $fr=mysql_fetch_assoc($f); $foto = DIR_FOTOS.$fr['FILE_PATH']; } } $valor = ''; if ($imovel['STATUS']=='ALUGUEL' || $imovel['STATUS']=='LOCAÇÃO') $valor = $imovel['VALOR_ALUGUEL']; else $valor = $imovel['VLR_VENDA']; // --- //URL amigavel //$url_amigavel = ""; //$url_amigavel .= str_replace(" ","-",$imovel['CATEGORIA'])."-"; //$url_amigavel .= str_replace(" ","-",$imovel['BAIRRO'])."-"; //$url_amigavel .= str_replace(" ","-",$imovel['CIDADE'])."__"; //$url_amigavel .= $imovel['CODIGO']; //$url_amigavel = strtolower($url_amigavel); //$url_amigavel = str_replace("/","-",$url_amigavel); //$url_amigavel = strtolower(remAcentos($url_amigavel)); $url_amigavel = "detalhes.php?codigo=".$imovel['CODIGO']; ?> <style type="text/css"> .r { color: #E77817; } </style> <div class="imovel <?=$quebra?>"> <div> <div class="cat"> <? if ($imovel['ESTAGIO_OBRA']=='Lançamento') { echo $imovel['EMPREENDIMENTO']; } elseif ($imovel['ESTAGIO_OBRA']=='Revenda') { echo $imovel['EMPREENDIMENTO']; } else { echo $imovel['CATEGORIA']; } ?> </div> <div class="cod">Código: <?=$imovel["CODIGO"]?></div> </div> <div class="foto"><a href="<?=$url_amigavel?>"><img src="<?=$foto?>" /></a></div> <div> <div class="local"><?=Maiusculo($imovel["BAIRRO"])?> <?=Maiusculo($imovel["CIDADE"])?></div> <a href="#" class="fav <?=is_favon($imovel["CODIGO"]);?>" rel="<?=$imovel['CODIGO'];?>">Favoritos</a> </div> <div> <ul> <? if ($imovel['DORM']>0) { echo '<li>'.$imovel['DORM']." dormitório"; echo $imovel['DORM']>1 ? "s</li>" : "</li>" ; } ?> <? if ($imovel['AREA']>0) { echo '<li>'.$imovel['AREA']."m² privativos</li>"; } ?> <? if ($imovel['VAGA']>0) { echo '<li>'.$imovel['VAGA']." vaga"; echo $imovel['VAGA']>1 ? "s</li>" : "</li>" ; } ?> <? if ($imovel['AREA_TOTAL']>0) { echo '<li>'.$imovel['AREA_TOTAL']."m² total</li>"; } ?> </ul> <div class="preco"> <? echo ($imovel["ESTAGIO_OBRA"]!='Pronto') ? '<small>A partir de</small>' : ''; ?> <?= ($valor>0) ? fcurrency('R$ ',$valor) : "Consulte" ; ?> </div> </div> <div> <a href="<?=$url_amigavel?>" class="link detalhes">Ver Detalhes do Imóvel</a> <? if ($aol_online) { ?> <a href="<?=$aol_offline;?>" class="link aol">Atendimento Online</a> <? } ?> </div> </div><!-- end .imovel --> E esse é o PHP que mostra as fotos <? $sql="SELECT imo.*, imo.CODIGO, imo.CODIGO_CT, cat.CATEGORIA, cat.GRUPO, imo.STATUS, imo.BAIRRO, imo.CIDADE, imo.DORMITORIO AS DORM, imo.SUITE AS SUITE, imo.DESCRICAO, imo.QUANTITADE_GAR AS VAGA, imo.ZONA as ZONEAMENTO, imo.AREA_PRIVATIVA AS AREAP, imo.AREA_TOTAL AS AREAT, imo.VLR_VENDA, imo.VALOR_ALUGUEL, imo.ESTAGIO_OBRA, loj.NOME as LOJA_NOM, loj.FONE as LOJA_FON, emp.NOME, emp.EMAIL FROM CADIMO imo LEFT JOIN CADCAT cat ON cat.CODIGO=imo.CODIGO_CT LEFT JOIN CMPN1 loj ON loj.CODIGO=imo.CODIGO_CS LEFT JOIN CDIMAG ag ON ag.CODIGO_O=imo.CODIGO LEFT JOIN CADEMP emp ON emp.CODIGO_D=ag.CODIGO_D WHERE imo.VER_WEB='Sim' AND ( INSTR(imo.STATUS,'VENDA')>0 OR INSTR(imo.STATUS,'LOCAÇÃO')>0 ) "; if( !empty($_GET['codigo']) && is_numeric($_GET['codigo']) ) { $sql.=" AND imo.CODIGO=".$_GET['codigo']; } else if( !empty($_GET['placa']) ) { if(is_numeric($_GET['placa'])) { $sql.=" AND imo.CODIGO='".$_GET['placa']."'"; } else { $sql.=" AND imo.PLACA='".$_GET['placa']."'"; } } //echo $sql; $query = mysql_query($sql) or die(mysql_error()); if(!mysql_num_rows($query)>0){ msg("Imóvel não encontrado.","back"); } $imovel= mysql_fetch_array($query); if($imovel["CODIGO_CT"]==21){ $fotoG = "vista.imobi/fotos/no_foto_terrenos.jpg" ; }else{ $fotoG = "vista.imobi/fotos/no_foto_p.jpg" ; } $f=mysql_query("SELECT FILE_PATH_P, FILE_PATH, DESCRICAO FROM CDIMIM WHERE CODIGO=".$imovel['CODIGO']." AND VER_WEB='Sim' ORDER BY DESTAQUE_WEB DESC, CODIGO"); if (mysql_num_rows($f)>0) { $rf=mysql_fetch_assoc($f); $fotoG=DIR_FOTOS.$rf['FILE_PATH']; } ?> <? // titulo dinamico do resultado $tit = ""; $tit .= $imovel["CODIGO"].": "; $tit .= $imovel["CATEGORIA"]." "; $tit .= $imovel["BAIRRO"]." "; $tit .= $imovel["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; ?> - <?= CFG_TITLE ?>" /> <meta name="keywords" content="imobiliaria porto alegre, imoveis porto alegre, fael imoveis" /> <meta name="classification" content="imoveis , imobiliaria"> <title><?= Maiusculo($tit); ?> - <?= CFG_TITLE; ?></title> <link href="inc/css/styles.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="inc/js/jquery.js"></script> <script type="text/javascript" src="inc/js/jquery.ui.js"></script> <script type="text/javascript" src="inc/js/jquery.lightbox.js"></script> <script type="text/javascript" src="inc/js/jquery.tools.js"></script> <script type="text/javascript" src="inc/js/jquery.tooltip.js"></script> <script type="text/javascript" src="inc/js/scripts.js"></script> <script type="text/javascript" src="inc/js/validaform.js"></script> <script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&key=<?=CFG_GMAPS?>&oe=iso-8859-1"></script> <script type="text/javascript" src="inc/js/eshapes.js"></script> <? if($imovel['GMAPS_LAT']!='') { ?> <script type="text/javascript"> $(document).ready(function(){ setTimeout("mapa_imovel(<?=$imovel['GMAPS_LAT']?>,<?=$imovel['GMAPS_LNG']?>,'circulo')",2000); }); </script> <? } ?> </head> <body> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <div id="container"> <? include("inc/layout/header.php"); ?> <? include("inc/layout/busca.php"); ?> <div id="mainContent"> <div id="leftContent"> <? include("inc/layout/simuladores.php"); ?> <? include("inc/layout/semelhantes.php"); ?> <? include("inc/layout/servicos.php"); ?> </div><!-- end #leftContent --> <div id="rightContent"> <h1><?=Maiusculo($imovel['CATEGORIA'].' '.$imovel['BAIRRO'].' '.$imovel['CIDADE']);?></h1> <div id="detalhes"> <div class="ifoto"> <? if(!empty($imovel["CAMPO_12"])) { if(strpos($imovel["CAMPO_12"],"=")) { $vd = split("=",$imovel["CAMPO_12"]); $idvid = $vd[1]; }else{ $idvid=""; } ?> <div id="foto"> <!-- YOUTUBE: <?=$imovel["CAMPO_12"]?> --> <object width="320" height="270" style="z-index:1"> <param name="movie" value="http://www.youtube.com/v/<?=$idvid?>&hl=pt-br&fs=1&"></param> <param name="allowFullScreen" value="true"></param> <param name="allowscriptaccess" value="always"></param> <param name="wmode" value="transparent"></param> <embed src="http://www.youtube.com/v/<?=$idvid?>&hl=pt-br&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" wmode="transparent" allowfullscreen="true" width="320" height="220" ></embed> </object> </div> <? }else{ ?> <a href="#" class="foto-link"><img src="<?=$fotoG?>" alt="<?=$imovel['CATEGORIA'].' '.$imovel['BAIRRO'].' '.$imovel['CIDADE'];?>" /></a> <? } ?> </div> <div class="info"> <h2><?=Maiusculo($imovel['BAIRRO']);?> <?=Maiusculo($imovel['CIDADE']);?></h2> <div class="left"> <table> <tr> <td class="c1">Código:</td> <td class="c1"><strong><?= ($imovel['CODIGO']); ?></strong></td> </tr> <? if ($imovel['DORM']>0) { ?> <tr> <td class="c1">Dormitórios:</td> <td class="c1"><strong><?= ($imovel['DORM']); ?></strong></td> </tr> <? } ?> <? if ($imovel['SUITE']>0) { ?> <tr> <td class="c1">Suíte:</td> <td class="c1"><strong><?= ($imovel['SUITE']); ?></strong></td> </tr> <? } ?> <? if ($imovel['VAGA']>0) { ?> <tr> <td class="c1">Garagem:</td> <td class="c1"><strong><?= ($imovel['VAGA']); ?></strong> vaga(s)</td> </tr> <? } ?> <? if ($imovel['AREAP']>0) { ?> <tr> <td class="c1">Área Privativa:</td> <td class="c1"><strong><?= ($imovel['AREAP']); ?>m²</strong></td> </tr> <? } ?> <? if ($imovel['AREAT']>0) { ?> <tr> <td class="c1">Área Total:</td> <td class="c1"><strong><?= ($imovel['AREAT']); ?>m²</strong></td> </tr> <? } ?> <? if ($imovel['VLR_VENDA']>0) { ?> <tr> <td class="c1"><? echo ($imovel["ESTAGIO_OBRA"]!='Pronto') ? 'A partir de' : 'Venda'; ?>:</td> <td class="c2"><strong><?= ($imovel['VLR_VENDA']>0) ? fcurrency('R$ ',$imovel['VLR_VENDA']) : "Consulte" ; ?></strong></td> </tr> <? } ?> <? if ($imovel['VALOR_ALUGUEL']>0) { ?> <tr> <td class="c1">Locação:</td> <td class="c2"><strong><?= ($imovel['VALOR_ALUGUEL']>0) ? fcurrency('R$ ',$imovel['VALOR_ALUGUEL']) : "Consulte" ; ?></strong></td> </tr> <? } ?> <? if ($imovel['VLR_CONDOMINIO']>0) { ?> <tr> <td class="c1">Condomínio:</td> <td class="c2"><strong><?= ($imovel['VLR_CONDOMINIO']>0) ? fcurrency('R$ ',$imovel['VLR_CONDOMINIO']) : "Consulte" ; ?></strong></td> </tr> <? } ?> <? if ($imovel['VLR_IPTU']>0) { ?> <tr> <td class="c1">IPTU:</td> <td class="c2"><strong><?= ($imovel['VLR_IPTU']>0) ? fcurrency('R$ ',$imovel['VLR_IPTU']) : "Consulte" ; ?></strong></td> </tr> <? } ?> <? if (($imovel['ESTAGIO_OBRA']=='Lançamento') || ($imovel['ESTAGIO_OBRA']=='Revenda')) { ?> <tr> <td class="c1">Previsão de Entrega:</td> <td class="c2"><strong><?= ($imovel['CAMPO_9']!='') ? date("m/Y", strtotime($imovel['CAMPO_9'])) : "Consulte" ; ?></strong></td> </tr> <? } ?> </table> </div> <ul class="links"> <? if ($imovel['LOJA_NOM']!='' && $imovel['LOJA_FON']!='') { ?><li style="text-align:center"><?= $imovel['LOJA_NOM'].'<br /><strong>'.$imovel['LOJA_FON'].'</strong><br />'; ?></li><? } ?> <? if ($aol_online) { ?> <li><a href="<?=$aol_href;?>" class="aol">Atendimento Online</a></li> <? } ?> <li><a href="#" class="fav <?=is_favon($imovel["CODIGO"]);?>" rel="<?php echo $imovel['CODIGO']; ?>">Adicionar aos favoritos</a></li> <li><a href="#" class="email">Enviar por email</a></li> <li><a href="print.php?codigo=<?php echo $imovel['CODIGO']; ?>" class="print">Imprimir este Imóvel</a></li> </ul> <div class="fb-like" data-href="http://www.fael.com.br/detalhes.php?codigo=<?= ($imovel['CODIGO']); ?>" data-send="true" data-layout="box_count" data-width="450" data-show-faces="true"></div> </div> </div><!-- end #detalhes --> <?php $f=mysql_query("SELECT FILE_PATH, FILE_PATH_P, DESCRICAO, CODIGO_I, DESTAQUE_WEB, IF(DESCRICAO='' OR DESCRICAO IS NULL,0,1) AS TEM_DESC FROM CDIMIM WHERE VER_WEB='Sim' AND CODIGO=".$imovel['CODIGO']." ORDER BY DESTAQUE_WEB DESC, DESCRICAO, CODIGO_I"); if(mysql_num_rows($f)>0) { ?> <div id="fotos" class="detalhesbox"> <h3 class="topo">Fotos do Imóvel</h3> <div class="wrapper"> <div class="btn btnLeft prevPage"></div> <div class="scrollArea"> <div class="scrollable" style=""> <div class="items"> <? while($foto=mysql_fetch_array($f)) { ?> <div><a class="tooltip" href="<?=DIR_FOTOS.$foto['FILE_PATH'];?>" title="<?=$foto['DESCRICAO'];?>"><img src="<?=DIR_FOTOS.$foto['FILE_PATH_P']?>" /></a></div> <? } ?> </div> </div> </div> <div class="btn btnRight nextPage"></div> </div> </div><!-- end #fotos --> <? } ?> <? if (trim($imovel['DESCRICAO'])!='' && (trim($imovel['ESTAGIO_OBRA'])=='Lançamento' || trim($imovel['ESTAGIO_OBRA'])=='Lançamento')) { ?> <div id="descricao" class="detalhesbox"> <h3 class="topo">Descrição</h3> <p><?=nl2br($imovel['DESCRICAO'])?></p> </div> <? } ?> <? //condominio //Agua quente, Ar central, Area Servico, Banho Auxiliar, Churrasq, Copa, Cozinha, Cozinha Montada, Deck, Dep Empr, Despensa, Estar Intimo, Gabinete, Gradeado, Hall, Home Theater, Lareira, Lavabo, Mobiliado, Patio, Piscina, Reformado, Sacada, Sala Jantar, Sauna, Semi Mobiliado, Split, Suite Master, Terraco, Vista Panor $listadecampos = "Ar Condicionado, Armario Cozinha, Armarios Embutidos, Casa Fundo, Caseiro, Tem Closet, Copa Cozinha, Cozinha com Azulejos, Deposito, Despensa, Entrada Lateral, Escritório, Esquina, Geminada, Entrada Servico Independente, Infra Internet, Isolada, Jardim, Lareira, Living tabuas, Mezanino, Quintal, Rua Asfaltada, Sala Almoco, Sala Jantar, Sala Intima, Salao de Festas, Seguranca Rua, Semi Geminada, Telefone, Varanda, WC Empregada, Agua quente, Ar central, Area Servico, Banho Auxiliar, Churrasq, Copa, Cozinha, Cozinha Montada, Deck, Dep Empr, Despensa, Estar Intimo, Gabinete, Gradeado, Hall, Home Theater, Lareira, Lavabo, Mobiliado, Patio, Piscina, Reformado, Sacada, Sala Jantar, Sauna, Semi Mobiliado, Split, Suite Master, Terraco, Vista Panor, Sala Estar, Lavanderia, Mobilia Quartos, Mobilia Cozinha, Mobilia Banheiros"; $var = get_carac($imovel['CODIGO'],$listadecampos); if(count($var)>0) { ?> <div class="detalhesbox"> <h3 class="topo">Características do Imóvel</h3> <ul class="checks"> <? for($i=0;$i<count($var);$i++){ echo '<li>'.$var[$i].'</li>'; } ?> </ul> </div> <?php } ?> <!-- end #localizacao <? //if ($imovel['GMAPS_LAT']!="" && (trim($imovel['ESTAGIO_OBRA'])=='Lançamento' || trim($imovel['ESTAGIO_OBRA'])=='Lançamento')) { ?> <div id="localizacao" class="detalhesbox"> <h3 class="topo">Localização do Imóvel</h3> <div id="map"></div> </div> <? //} ?> --> <div id="imovel-form" class="detalhesbox"> <h3 class="topo">Fale com nossos Corretores</h3> <p>Para aproveitar esta oportunidade, por favor, envie o formulário abaixoque um dos nossos Corretores entrará em contato.</p> <form action="detalhes.php?act=send&codigo=<?=$imovel['CODIGO'];?>" method="post" name="maisinfo" id="maisinfo" class="validaform"> <input name="codigo" type="hidden" value="<?=$imovel['CODIGO'];?>" /> <input name="status" type="hidden" value="<?= ($imovel['STATUS']=='LOCAÇÃO') ? 'LOC' : 'VEN';?>" /> <input name="corretor" type="hidden" value="<?=$imovel['NOME'];?>" /> <input name="emailagenciador" type="hidden" value="<?=$imovel['EMAIL'];?>" /> <input name="estagio_obra" type="hidden" value="<?=$imovel['ESTAGIO_OBRA'];?>" /> <div> <fieldset class="linha"> <label>Nome:*</label> <input type="text" class="text" name="nome" /> </fieldset> <fieldset class="linha"> <label>E-mail:*</label> <input type="text" class="text" name="email" /> </fieldset> <fieldset class="linha"> <label>Telefone:*</label> <input type="text" class="text" name="telefone" /> </fieldset class="linha"> <fieldset class="quebra linha"> <label>Como nos conheceu?</label> <select name="onde" class="text"> <option value="">Selecione</option> <option>Classificados jornal</option> <option>Corretor</option> <option>Evento</option> <option>Folder</option> <option>Google</option> <option>Indicação de amigo</option> <option>Internet</option> <option>Já conheço a imobiliária</option> <option>Lista telefônica</option> <option>Outdoor</option> <option>Placa</option> <option>Outros</option> </select> </fieldset> <fieldset class="big linha"> <label>Sua mensagem:*</label> <textarea name="texto" class="text"></textarea> <div> <label class="nws"><input name="nws" type="checkbox" value="ok" checked="checked"> Quero receber informativos e oportunidades da Fael por e-mail.</label> <input type="image" src="img/design/btn_enviar.png" class="submit" /> </div> </fieldset> <fieldset class="linha"> <label>Validação Anti-Spam: *</label> <input type="text" name="digcod" class="text" value="" style="width:70px" /> <? /* CAPTCHA X */ $captcha = array('eww4','eww8','ukg4','dxq1','nsq7','fvh8','xah3','fws5','usz6','ewu6','yku9'); $mostrar1 = array_rand($captcha); $_SESSION["digcod1"]=$captcha[$mostrar1]; echo ('<img src="img/captcha/'.$mostrar1.'.gif" height="23" style="padding: 0 0 0 10px; float: right" />'); ?> </fieldset> </div> </form> </div><!-- end #imovel-form --> <div> <p>* Os preços, valores e informações acima exibidos, poderão sofrer mudanças sem prévio aviso. Por este motivo todos os preços e informações deverão ser confirmados pelo departamento comercial da Fael Imóveis.</p> </div> </div><!-- end #rightContent --> </div><!-- end #mainContent --> </div><!-- end #container --> Obrigado a todos! Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Janeiro 3, 2012 Pelo visto os seus thumbnails são criados na hora do envio e não em tempo de execução, então não é esse o problema. Talvez o problema seja a quantidade de acessos mesmo, eu já tive sérios problemas com relação a isso na Locaweb. Eu tinha um site que começou a aumentar o número de visitas e eles tiraram do ar (isso é super comum lá), queriam me empurrar pra um dedicado ou Cloud Server. Daí na época migrei pro UOL HOST e o site ficou mais dois anos lá crescendo sem parar em servidor compartilhado e com o desempenho muito superior. Até que eu contratei um servidor dedicado porque precisava de mais espaço em disco, se não ele tava até hoje lá rodando sem nenhum problema e bem mais rápido que na LocaWeb. Eu não sei o que acontece com a LocaWeb, se os servidores que eles usam são meia boca, se entopem de clientes no mesmo servidor até não aguentar mais, ou se as duas coisas. Dê mais uma revisada nos códigos do seu sistema aí pra ver se encontra gargalos de programação, se não encontrar sugiro que migre de empresa de hospedagem. 15 mil acessos por mês não é muito não, são apenas 500 acessos por dia e 20 acessos por hora. Pagar um servidor dedicado só pra atender 20 acessos por hora é que é um exagero. Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Peperaio 20 Denunciar post Postado Janeiro 3, 2012 Amigo, não é a minha intenção falar mal da Locaweb, mas 15 mil acessos por mês é algo infímo perto do que uma hospedagem compartilhada pode te oferecer. Eu tenho um site com 16 mil acessos por dia, aproximadamente 380.000 mil por mês e nunca ficou fora do ar. (hospedagem compartilhada nos EUA -> http://www.hostgator.com/) Sobre o seu projeto, como dito pelos colegas acima, tente fazer cache de arquivo, de consultas MySQL repetidas ou procurar um servidor que libere hardware pra você. Compartilhar este post Link para o post Compartilhar em outros sites
Siga Fael 0 Denunciar post Postado Janeiro 4, 2012 Pessoal, estou pensando em migrar de host. Alguém conhece este? http://www.webhostinghub.com/ Vou migrar e depois postar aqui o feedback. Abraço! Compartilhar este post Link para o post Compartilhar em outros sites