Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Allowed memory size. O co chodzi?
thomson89
post
Post #1





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Czyli o co chodzi w tym błędzie, nigdy się z nim nie spotkałem. Proszę o pomoc!

Kod
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 133955563 bytes) in "XXX" on line 28

  1. $query = 'SELECT * FROM `dzialy`';
  2. $results = mysql_query($query);
  3. $tableWithResults = mysql_fetch_assoc($results);
  4.  
  5. $resultWithOptions = '<option value="nic">-- wybierz --</option>';
  6. while($result = $tableWithResults){
  7. $resultWithOptions .= '<option>'.$result['nazwa'].'</option>'; //28 linia
  8. }


EDIT: Wyciąłem ścieżkę pliku.

Ten post edytował thomson89 21.11.2009, 12:25:37


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
morswin
post
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 3
Dołączył: 7.04.2005

Ostrzeżenie: (0%)
-----


skrypt wyczerpał limit przyznanej mu pamięci. Wskaż nam 28 linijkę kodu

Ten post edytował morswin 21.11.2009, 12:44:00
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No Twój skrypt zżera za dużo pamięci, po prostu.

Użyj czasem translatora...

Diagnoza? Po takim skrawku kodu nie da się nic jednoznacznie powiedzieć.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
thomson89
post
Post #4





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


coś więcej

  1. <div class="formularz">
  2. <?php
  3. $_SESSION['co'] = $_POST['co'];
  4. switch ($_POST['co']){
  5. //dzialy
  6. case 'dzialy':
  7. ?>
  8. <form action="panel/index.php?akcja=tresc,dodaj,sprawdz" method="post">
  9. <font size="6" face="Monotype Corsiva" color="#753334"><center>Treść strony dodaj: dział</center></font><br>
  10. Nazwa:<br>
  11. <input type="text" name="nazwa"><br>
  12. Znacznik <i>&lt;title&gt;</i>:<br>
  13. <input type="text" name="title"><br>
  14. <br>
  15. <input type="submit" class="button" value="Dodaj">
  16. </form>
  17. <?php
  18. break;
  19.  
  20. //podstrony
  21. case 'podstrony':
  22. $query = 'SELECT * FROM `dzialy`';
  23. $results = mysql_query($query);
  24. $tableWithResults = mysql_fetch_assoc($results);
  25.  
  26. $resultWithOptions = '<option value="nic">-- wybierz --</option>';
  27.  
  28. while($record = $tableWithResults){
  29. $resultWithOptions .= '<option>'.$record['nazwa'].'</option>'; //28 linia
  30. }
  31.  
  32. ?>
  33. <font size="6" face="Monotype Corsiva" color="#753334"><center>Treść strony dodaj: podstronę</center></font><br>
  34. Nazwa:<br>
  35. <input type="text" name="nazwa"><br>
  36. Dział:<br>
  37. <select name="dzial">
  38. <?php print $resultWithOptions; ?>
  39. </select>
  40. <br><br>
  41. <input type="submit" class="button" value="Dodaj">
  42. <?php
  43. break;
  44.  
  45. //teksty
  46. case 'teksty':
  47. ?>
  48. <div id="ostrzezenie" style="color: black;">
  49. <img src="panel/images/warning_48.png" align="left">
  50. <font size="4"> Budowa trwa!
  51. </font></div>
  52. <?php
  53. break;
  54. }
  55. ?>
  56. </div>


PS: nie wiem jak linijkę wyrożnić


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
Wicepsik
post
Post #5





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Ile działów masz w bazie? Myślę że pętla while się zapętla i do zmiennej resultWithOptions nie można dopisać tekstu bo brak pamięci.
  1. print_r($tableWithResults);

I zobacz ile masz wyników.


--------------------
Go to the top of the page
+Quote Post
thomson89
post
Post #6





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Jest jeden dział, print_r(); zwraca jeden rekord (w trzech kolumnach: id, nazwa, opcje).
Kod
Array ( [id] => 1 [nazwa] => Strona główna [opcje] => *** )


EDIT: Przyczyną zamieszania jest pętla. dałem tak i parser nie krzyczy:
  1. //while($record = $tableWithResults){
  2. $resultWithOptions .= '<option>'.$tableWithResults['nazwa'].'</option>';
  3. //}


EDIT 2:
  1. while($record = mysql_fetch_assoc($results)){
  2. $resultWithOptions .= '<option>'.$record['nazwa'].'</option>';
  3. }

Dałem tak i również nie ma blędu, ale też pierwszy rekord się nie wyświetla (wiem, bo dodałem drugi).

EDIT 3: Dodałem trzeci rekord, i wyświetliły się tylko dwa rekordy w liście select. ale o dziwo, usunąłem pierwszy rekord ze "strona główna" i odświeżyłem tamtą stronę. Pojawił się jeden rekord!!! Mimo, że w bazie są dwa. WTF!? wacko.gif
Kod
id     nazwa     nazwa_title
3    Biżuteria    bizuteria
4    Pamiątki sakralne    pamiatki


POMOCY!

Ten post edytował thomson89 21.11.2009, 13:37:53


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~thomson89, zacznij może od lektury jakiegoś kursu, gdyż skoro nie widzisz różnicy między:
  1. $tableWithResults = mysql_fetch_assoc($results);
  2.  
  3. $resultWithOptions = '<option value="nic">-- wybierz --</option>';
  4.  
  5. while($record = $tableWithResults){


a
  1. while($record = mysql_fetch_assoc($results)){
  2. $resultWithOptions .= '<option>'.$record['nazwa'].'</option>';
  3. }

To naprawdę nie mamy o czym rozmawiać. Wiesz, co robi mysql_fetch_assoc? Bo sądząc po Twoich listingach - nie masz o niej zielonego pojęcia i zadajesz pytania, które i w przedszkolu nie przystoją.

Cytat
EDIT 3: Dodałem trzeci rekord, i wyświetliły się tylko dwa rekordy w liście select. ale o dziwo, usunąłem pierwszy rekord ze "strona główna" i odświeżyłem tamtą stronę. Pojawił się jeden rekord!!! Mimo, że w bazie są dwa. WTF!?

Patrz: wyżej.

Cytat
Myślę że pętla while się zapętla i do zmiennej resultWithOptions nie można dopisać tekstu bo brak pamięci.

Właśnie. Ale to jest praca domowa, bez której nawet nie ma co dalej pisać. Myślenie nie boli, a w tym miejscu wyłazi jego ewidentny brak.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wicepsik
post
Post #8





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Cytat(darko @ 21.11.2009, 14:51:30 ) *
wykonujesz nieskończoną pętlę:

  1. while($record = $tableWithResults){
  2. $resultWithOptions .= '<option>'.$record['nazwa'].'</option>'; //28 linia
  3. }


daj:

  1. while($record == $tableWithResults) {
  2. $resultWithOptions .= '<option>'.$record['nazwa'].'</option>'; //28 linia
  3. }

wtf? sciana.gif


#erix
Nawet nie zauważylem złego użycia mysql_fetch_assoc smile.gif

Ten post edytował Wicepsik 21.11.2009, 15:09:55


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 15:46