Nepochopiteľne pomalý skript po malej zmene – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nepochopiteľne pomalý skript po malej zmene – PHP – Fórum – Programujte.comNepochopiteľne pomalý skript po malej zmene – PHP – Fórum – Programujte.com

 

Hudacik0
Duch
23. 4. 2010   #1
-
0
-

<?php

require("variables.php");

mysql_select_db($db,$con);
$sql = ("SELECT * FROM test_diskusia");

$everything = mysql_query($sql);
$rows = mysql_num_rows($everything);
$i = 0;

while ($i < $rows)
{
$reactsTo = mysql_result($everything, $i, "reactsTo");
//if ($reactsTo == 0){
$id = mysql_result($everything, $i, "id");
$name = mysql_result($everything, $i, "name");
$title = mysql_result($everything, $i, "title");
$date = mysql_result($everything, $i, "date");

$rating = mysql_result($everything, $i, "rating");
$text = mysql_result($everything, $i, "text");
echo("<div class='commentbox'>
<div class='top'>
<div class='id'>#$id</div>
<div class='title'>$title</div>
<div class='rating'>$rating</div>
</div>
<div class='commentbody'>$text</div>
<div class='bottom'>
<div class='name'>$name</div>
<div class='react'> <a href='addcomment.php?reaction=$id'>(reagovať)</a></div>
<div class=date>$date</div>
</div>
</div>");

$replies = ("SELECT * FROM test_diskusia WHERE reactsTo = $id");
$allReplies = mysql_query($replies);
$totalReplies = mysql_num_rows($allReplies);
$j = 0;
if ($totalReplies > 0)
{
while ($j < $totalReplies)
{
$replyLevel = 1;
$marginPX = $replyLevel * 20;
$units = "px";
$margin = $marginPX.$units;

$id = mysql_result($allReplies, $j, "id");
$name = mysql_result($allReplies, $j, "name");
$title = mysql_result($allReplies, $j, "title");
$date = mysql_result($allReplies, $j, "date");
$reactsTo = mysql_result($allReplies, $j, "reactsTo");
$rating = mysql_result($allReplies, $j, "rating");
$text = mysql_result($allReplies, $j, "text");
echo("<div class='commentbox' style='margin-left:$margin;'>
<div class='top'>
<div class='id'>#$id</div>
<div class='title'>$title</div>
<div class='rating'>$rating</div>
</div>
<div class='commentbody'>$text</div>
<div class='bottom'>
<div class='name'>$name</div>
<div class='react'> <a href='addcomment.php?reaction=$id'>(reagovať)</a></div>
<div class=date>$date</div>
</div>
</div> ");
$j++;
}
}
$i++;
//}
}
?>

Skript je vlastne začatá diskusia k článku, snažím sa docieliť podobný štýl ako má SME.sk. Keď odstránim komentáre a otestujem kód, trvá to veľmi dlho, až nakoniec dostanem Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\diskusia\index.php on line 25 (nevkladám celý súbor, preto iné číslo riadku). V testovacej databáze mám pritom iba 5 príspevkov. Ten riadok však potrebujem, pretože kontroluje, či je príspevok odpoveďou na iný, ak nie, tak ho vypíše.

Tiež mám problém s viacnásobnými odpoveďami (odpoveď na odpoveď), pretože môj skript zvládne iba jednu. Potreboval by som nejaký tip ako približne na to, pretože už vidím, že mojim spôsobom to nepôjde.

Nahlásit jako SPAM
IP: 85.135.173.–
"You never finish a program, you just stop working on it."
KIIV
~ Moderátor
+43
God of flame
23. 4. 2010   #2
-
0
-

radsi ani nechtej vedet jak sem to vyresil na ta3.com :D tak trosku sem tam nedelal zadny strankovani ale asi to ani nevadi kdyz je to tam uz 4 roky a zadna zmena

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hudacik0
Duch
23. 4. 2010   #3
-
0
-

Podarilo sa mi vyriešiť tie viacnásobné komentáre, ale stále sa neviem zbaviť tých duplikátov, čo dostávam, keďže pochopiteľne nemôžem použiť skript ktorý trvá viac ako minútu.
Skúšal som pridať id už vypísaného komentára do array a potom porovnať, či už neexistuje, no výsledok bol rovnaký.

Nahlásit jako SPAM
IP: 85.135.147.–
"You never finish a program, you just stop working on it."
KIIV
~ Moderátor
+43
God of flame
23. 4. 2010   #4
-
0
-

no jen pro upresneni.. obvykle pouzivam mysql_fetch_assoc
mam takovy pocit ze pristup primo k radkum byl nejakej pomalejsi.. ale uz sem to hodne dlouho netestoval

jak dlouho trvaji ty dotazy ? bez nejakeho prochazeni poddotazu?

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 24 hostů

Podobná vlákna

Nepochopitelné TS — založil jAkErCZ

Malej bug — založil Phoenix

Malej dotaz :D — založil spouny

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý