watt Posted June 22, 2006 at 11:28 PM Report #34341 Posted June 22, 2006 at 11:28 PM Alguem me pode dar uma judinha? estou a fazer o seguinte site http://www.pixelprog.com/KPC/ e acontece que desde de que as opões do menu cresceram o site ficou muito lento. o codigo que tenho no menu o seguinte. <ul id="navmenu"> <?php do { ?> <div align="left"></div> <li> <a href="cat.php?val=<?php echo $row_Recordset1['menu1']; ?>"><?php echo $row_Recordset1['menu1']; ?></a> <ul> <?php $selecionado = $row_Recordset1['menu1']; mysql_select_db($database_bd, $bd); $query_Recordset2 = "SELECT * FROM menus WHERE nivel = '2' and menu1='$selecionado'"; $Recordset2 = mysql_query($query_Recordset2, $bd) or die(mysql_error()); $row_Recordset2 = mysql_fetch_assoc($Recordset2); $totalRows_Recordset2 = mysql_num_rows($Recordset2); ?> <?php do { ?> <?php if ( $row_Recordset2['menu2'] <> '') {; ?> <li> <a href="cat.php?val=<?php echo $row_Recordset2['menu2']; ?>"><?php echo $row_Recordset2['menu2']; ?></a> <ul> <?php $selecionado2 = $row_Recordset2['menu2']; mysql_select_db($database_bd, $bd); $query_Recordset3 = "SELECT * FROM menus WHERE nivel = '3' and menu2='$selecionado2'"; $Recordset3 = mysql_query($query_Recordset3, $bd) or die(mysql_error()); $row_Recordset3 = mysql_fetch_assoc($Recordset3); $totalRows_Recordset3 = mysql_num_rows($Recordset3); ?> <?php do {?> <?php if ( $row_Recordset3['menu3'] <> '') {; ?> <li> <a href="cat.php?val=<?php echo $row_Recordset3['menu3']; ?>"> <?php echo $row_Recordset3['menu3']; ?></a> </li> <?php }; ?> </li> <?php } while ($row_Recordset3 = mysql_fetch_assoc($Recordset3)); ?> </ul> <?php }; ?> <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?> </ul> </div> </li> <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
kingless Posted June 22, 2006 at 11:51 PM Report #34344 Posted June 22, 2006 at 11:51 PM Acho que o servidor é que é lento, não acho que este código possa fazer o site ficar lento. Mas depende... Cada caso é um caso
watt Posted June 23, 2006 at 12:07 AM Author Report #34346 Posted June 23, 2006 at 12:07 AM Acho que o servidor é que é lento, não acho que este código possa fazer o site ficar lento. Mas depende... Cada caso é um caso estranho, acho que deve de haver outra razão. o q poderá ser alem de um server lento ?!
kingless Posted June 23, 2006 at 12:46 AM Report #34353 Posted June 23, 2006 at 12:46 AM Estive a ver o código de fonte da página e reparei que é muito grande... isso é que deve estar a fazer a pagina ficar lenta porque a pagina está muito pesada. E as imagens devem estar a fazer a página ficar lenta também.
watt Posted June 23, 2006 at 01:38 AM Author Report #34356 Posted June 23, 2006 at 01:38 AM Estive a ver o código de fonte da página e reparei que é muito grande... isso é que deve estar a fazer a pagina ficar lenta porque a pagina está muito pesada. E as imagens devem estar a fazer a página ficar lenta também. achas ?! é que só comecei a ter este problema qd o meu cresceu, porque antes qd tinha metade do menu, ele era rapido.tipo em 1 segundo no maximo tinha a pagina aberta.
kingless Posted June 23, 2006 at 02:41 AM Report #34361 Posted June 23, 2006 at 02:41 AM Então não sei como te ajudar...
pedrotuga Posted June 23, 2006 at 02:58 AM Report #34363 Posted June 23, 2006 at 02:58 AM bem... epa... devias organizar o código um pouco... está um confusão dos diabos. abres e fechas tags de seguida umas quantas vezes... devias tambem mudar de linha de vem em qdo. Acho que no teu caso mais vale usar uma estrutura do tipo: if ( condiçao ) { código } tens isso com DO IF... tens k andar a fazer gincanas p abrir e fechar tags php... anyway... para alem disso n vejo o que podes estar a fazer o sql lento... tens a base de dados no mesmo servidor que o webserver? é que tas a usar os dois parametros do mysql_query qdo só precisas de um... faz a ligação a base de dados no inicio e depois usa somente a função desta forma mysql_query($query); é que de outra forma tens que te estar sempre a autenticar o servidor cada vez que fazes um pedido... penso que pode ser isto que te esteja a criar lentidão, pois esse código não tem queries nenhuns que precisem de atenção especial Experimenta e diz lá se correu bem
kingless Posted June 23, 2006 at 03:10 AM Report #34364 Posted June 23, 2006 at 03:10 AM Acho que ele tem que organizar o código html e não deve juntar o código php com o código html. E utilizar classes e functions para fazer a conecção com a base de dados para não ter que estar sempre a conectar a msyql, e só conectar quando for preciso fazer um query. Não aconselho a utilizar if e elses isso só faz aumentar o código php e a desorganizar por vezes.
watt Posted June 23, 2006 at 10:31 AM Author Report #34378 Posted June 23, 2006 at 10:31 AM será que me podem exemplificar um pouco do codigo usando "E utilizar classes e functions para fazer a conecção com a base de dados para não ter que estar sempre a conectar a msyql, e só conectar quando for preciso fazer um query." é que ainda estou a começar isto do php, e no inicio tentei fazer umas function, mas correu mal. e agora ao mexer nas querey isto começa-me a atrofiar td.
M6 Posted June 23, 2006 at 11:48 AM Report #34391 Posted June 23, 2006 at 11:48 AM ARG!!! Ora cá está um excelente exemplo da porcaria que as linguagens como o PHP e o ASP permitem fazer: uma enorme salganhada de código onde se mistura tudo, desde apresentação até lógica de negócio! Se o problema aparecer quando os menus cresceram vê a construção do teu HTML e vê a performance da tua bd. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
kingless Posted June 23, 2006 at 02:21 PM Report #34426 Posted June 23, 2006 at 02:21 PM será que me podem exemplificar um pouco do codigo usando "E utilizar classes e functions para fazer a conecção com a base de dados para não ter que estar sempre a conectar a msyql, e só conectar quando for preciso fazer um query." é que ainda estou a começar isto do php, e no inicio tentei fazer umas function, mas correu mal. e agora ao mexer nas querey isto começa-me a atrofiar td. Eu criei esse código a dois dias atrás para um script que estou a fazer!! Fica aqui para utilizares: class kinSql { function kinSql( $kinHost, $kinUser, $kinSenha, $kinBD, $Permanente = TRUE ) { if($Permanente) { $this->Conectar = mysql_pconnect( $kinHost, $kinUser, $kinSenha ); } else { $this->Conectar = mysql_connect( $kinHost, $kinUser, $kinSenha ); } if($this->Conectar) { if($kinBD != "") { $this->kinBD = $kinBD; $SelBD = @mysql_select_db( $this->kinBD ); if(!$SelBD) { @mysql_close( $this->Conectar ) ; $this->Conectar = $SelBD; } return $this->Conectar; } } } } $bd = new kinSql( $kinHost, $kinUser, $kinSenha, $kinBD, true ); isso conecta e seleciona o banco de dados... só precisas de fazer um include em todas paginas e não precisas conectar outra vez... só precisas de executar os querys. Tens que ter a variaveis $kinHost com o host da mysql $kinUser com o user da mysql $kinSenha com a senha da mysql $kinBD com o nome do banco de dados.
pedrotuga Posted June 23, 2006 at 04:27 PM Report #34455 Posted June 23, 2006 at 04:27 PM experimenta ligar-te primeiro, podes usar por exemplo class do kingless, e depois faz os queries usando apenas como parametro de entrada a string do query.
watt Posted June 23, 2006 at 11:58 PM Author Report #34521 Posted June 23, 2006 at 11:58 PM bem ... unca usei classes, nem includes só tinha lido... vou tentar fazer alguma coisa
kingless Posted June 24, 2006 at 01:15 AM Report #34528 Posted June 24, 2006 at 01:15 AM No principio da pagina onde tens que executar um query colocas include("ficheiro.php"); (ficheiro.php é o nome do ficheiro onde vai ficar a class). É so fazer o include.. e depois podes executar o query normalmente tipo mysql_query("SELECT..."); mysql_fetch_array("..."); Sem ser preciso utilizar mysql_connect nem mysql_select_db
kingless Posted June 24, 2006 at 01:17 AM Report #34529 Posted June 24, 2006 at 01:17 AM experimenta ligar-te primeiro, podes usar por exemplo class do kingless, e depois faz os queries usando apenas como parametro de entrada a string do query. Eu já tinha dito isso 😉
watt Posted June 24, 2006 at 11:29 PM Author Report #34640 Posted June 24, 2006 at 11:29 PM estou mesmo á nóra... pus a class no file ligar.php, no index.php pus <?php include('ligar.php') ?> depois como uso a função ?
watt Posted June 26, 2006 at 10:45 PM Author Report #34995 Posted June 26, 2006 at 10:45 PM raius partam as classs e funçoes, nao consigo ligar isto de forma nenhuma já agora, existe alguma especie de dreamweaver pa linux ??
kingless Posted June 27, 2006 at 02:34 AM Report #35004 Posted June 27, 2006 at 02:34 AM só precisas de fazer o include e mais nada, depois é só executar o query normalmente... mysql_query()... mysql_fetch_array()...
pedrotuga Posted June 27, 2006 at 04:56 AM Report #35007 Posted June 27, 2006 at 04:56 AM pa... esquece as classes... deixas as classes para depois... usa código deste tipo: no inicio de cada ficheiro poe isto ( está o mais simples possivel ) muda as variáveis como é obvio $host="localhost"; $user="gervasio"; $pass="gervasiospass"; $dbname="gervasiosbd"; mysql_connect($host,$user,$pass,); mysql_select_db($dbname); depois cada vez que fazes um query faz uma coisa do tipo $sql="select * from tbls where 1"; mysql_query($sql); o que há aqui a reter é o facto de passares APENAS UM PARAMETRO NA FUNCAO MYSQL_QUERY pois a ligação já está feita... acho que o que te está a atrasar pode ser o facto de, com o código que tinhas teres que estar sempre a a abrir uma ligação para cada query.
watt Posted June 28, 2006 at 02:25 AM Author Report #35191 Posted June 28, 2006 at 02:25 AM e depois isto assim n deveria escrever o resultado ? <?php $sql="select * from produtos where id='4'"; mysql_query($sql); echo $recordset33['artigo']; ?>
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now