Autor | Zpráva | ||
---|---|---|---|
ato3 Profil |
#1 · Zasláno: 3. 2. 2008, 21:55:17
Ahoj, tuhle chybu mi vrací PHP.. mohu se optat co to znamená? moc jsem toho nevygooglil, ale chápu, že asi skriptem příliš zatěžuji server.. mám to tedy chápat, že by bylo vhodnější skript rozprostřít do více souborů? nebo co s tím?
Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 14156705 bytes) |
||
Davex Profil |
#2 · Zasláno: 3. 2. 2008, 22:13:31
Skript se snaží zabrat příliš mnoho paměti. Nejčastěji se to stává při zpracování obrázků, pokud se neuvolní paměť pomocí imagedestroy().
|
||
ato3 Profil |
#3 · Zasláno: 3. 2. 2008, 22:30:08
Davex
s obrázky vůbec nepracuji, tahám data z databáze a spojuji 3 tabulky - neřekl ybch, že to jsou nějak náročné skripty |
||
Alphard Profil |
#4 · Zasláno: 3. 2. 2008, 22:33:11
není v nich nějaká chyba? nekonečný cyklus, který by nestále zvyšoval nároky na pamět apod.?
|
||
ato3 Profil |
#5 · Zasláno: 3. 2. 2008, 22:52:06 · Upravil/a: ato3
$sql = "SELECT * FROM ucebnice INNER JOIN nakladatelstvi ON id_nakladatelstvi=nakladatelstvi.id WHERE id_uzivatele='".$_SESSION['id']."'"; $dtz = mysql_query($sql); $cislo = mysql_num_rows($dtz); if ($cislo != 0) { $obsah .= "<table>"; } $sql = "SELECT * FROM ucebnice WHERE id_uzivatele='".$_SESSION['id']."'"; $dtz = mysql_query($sql); while ($r = mysql_fetch_array($dtz)) { extract($r); $obsah .= "<tr>"; $obsah .= "<td>$id</td>"; $obsah .= "<td>$nazev_uč</td>"; $sql = "SELECT * FROM nakladatelstvi WHERE id='$id_nakladatelstvi'"; $dtz = mysql_query($sql); $result = mysql_fetch_array($dtz); $obsah .= "<td>$result[nazev_nakladatelstvi]</td>"; $obsah .= "<td>$rok_vydani</td>"; $obsah .= "<td>$isbn</td>"; $obsah .= "<td>$cena</td>"; $obsah .= "<td>$komentar</td>"; $tok = strtok ($datum,"-"); while ($tok) { $date[] = "$tok"; $tok = strtok ("-"); } $obsah .= "<td>$date[2]. $date[1]. $date[0]</td>"; $sql = "SELECT * FROM ucebnice WHERE id_uzivatele='".$_SESSION['id']."'"; $dtz = mysql_query($sql); $rr = mysql_fetch_array($dtz); $obsah .= "<td><a href='/upravit-ucebnici/?id=$rr[id]'>Upravit</a></td>"; $obsah .= "<td>Odstranit</td>"; $obsah .= "</tr>"; } if ($cislo != 0) { $obsah .= "</table>"; } } tohle je kod, kterej to asi zaviňuje nevidím tam, že by se něco cyklilo |
||
djlj Profil |
#6 · Zasláno: 3. 2. 2008, 22:54:12
Proč je tam několikrát stejnej dotaz do databáze?
|
||
Mastodont Profil |
#7 · Zasláno: 3. 2. 2008, 22:59:33 · Upravil/a: Mastodont
ato3
Ten první select, který potřebuješ jen proto, abys zjistil počet řádků, to myslíš vážně? Co třeba Select count(*) ... |
||
ato3 Profil |
#8 · Zasláno: 4. 2. 2008, 17:52:18
Díky, opravdu jsem moc zatěžoval server. Zjednodušel jsem to.
Jo a select count mi fakt pomohlo, nevedel jsem o tom. Díky |
||
djlj Profil |
#9 · Zasláno: 4. 2. 2008, 19:27:01
A pokud nemáš, přidej na vhodné sloupce i indexy -- třeba id_uzivatele v tabulce ucebnice.
|
||
Časová prodleva: 16 let
|
0