Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Fatal error: Allowed memory size of... Na localhoscie, korzystając ze Smarty
Forum PHP.pl > Forum > Przedszkole
Darekxp
Witam!

Mam problem, ponieważ poniższy błąd pojawia się tylko gdy korzystam (a w zasadzie chciałem dopiero) skorzystać ze Smarty. W moich projektach, gdzie nie używałem Smarty ten błąd nie występuje. Dodam, że błąd pojawia się na localhoscie (WebServ), gdy próbuje wyświetlić dane z bazy MySQL.

Zmieniałem już w php.ini wielkość pamięci na różne wielkości i nic nie pomogło. Zmienia się natomiast komunikat w zależności od wielkości przydzielonej pamięci. Powyżej ok 26M pojawią się błąd serwera.


Fatal error: Allowed memory size of 17825792 bytes exhausted (tried to allocate 40961 bytes) in C:\Program Files\WebServ\httpd\libs\sysplugins\smarty_internal_templatebase.php on line 172

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1128 bytes) in C:\Program Files\WebServ\httpd\libs\sysplugins\smarty_internal_debug.php on line 56

Jak to rozwiązać?
nospor
Może pokaz kod php oraz szablon smarty, w którym przetwarzasz dane z php
Darekxp
  1. <?php
  2.  
  3. include('configs/mysql.php');
  4. require('libs/Smarty.class.php');
  5.  
  6. $smarty = new Smarty;
  7.  
  8.  
  9.  
  10. //$smarty->force_compile = true;
  11. $smarty->debugging = true;
  12. $smarty->caching = true;
  13. $smarty->cache_lifetime = 120;
  14.  
  15. $smarty->assign('title','Wyswietlanie danych z bazy MySQL');
  16.  
  17. $smarty->display('wpisy.tpl');
  18.  
  19. //wpisy
  20. $zapytanie_o_wpisy=mysql_query("SELECT userLogin, userEmail FROM uzytkownicy WHERE userAktywowany='yes' LIMIT 5");
  21. while($a = mysql_fetch_array($zapytanie_o_wpisy))
  22. {
  23. $wpisy[] = $a;
  24. }
  25.  
  26. $smarty -> assign('wpisy', $wpisy);
  27.  
  28. ?>


  1. <title>{$title}</title>
  2. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  3. </head>
  4. <body>
  5. {include file='wpisy.tpl' assign="wpisy"}
  6. Lista userów:<br />
  7. <br />
  8. {$wpisy}
  9. </body>
  10. </html>


I jeszcze index.php bo zauważyłem, że problem pojawia się tu i tu, niezależnie czy pobieram coś z bazy czy nie.

  1. <?php
  2.  
  3. require('libs/Smarty.class.php');
  4. //require('configs/mysql.php');
  5.  
  6.  
  7. $smarty = new Smarty;
  8.  
  9. $smarty->caching = true;
  10. $smarty->cache_lifetime = 120;
  11.  
  12. $smarty->template_dir = 'templates/';
  13. $smarty->compile_dir = 'templates_c/';
  14. $smarty->cache_dir = 'cache/';
  15. $smarty->config_dir = 'configs/';
  16.  
  17.  
  18. if (isset($_GET['page'])){
  19. $module = basename($_GET['page']);
  20. if (file_exists("$module.php")) include("$module.php");
  21. if (file_exists($smarty->template_dir.$module.".tpl")) $body_template = "$module.tpl";
  22. else $body_template = 'index.tpl';
  23. }
  24. else $body_template = 'index.tpl';
  25.  
  26.  
  27.  
  28. $smarty->assign('tytul',''.$domena.'');
  29. $smarty->assign('tytul_tresc','Strona główna');
  30. $smarty->assign('box_1','Aktualności');
  31. $smarty->assign('body',$body_template);
  32.  
  33.  
  34. $smarty->display('index.tpl');
  35.  
  36. ?>


  1. <TITLE>{$tytul} - {$tytul_tresc}</TITLE>
  2. </HEAD>
  3. <BODY bgcolor="#fccfff">
  4.  
  5. {include file=$body}
  6. </BODY>
  7. </HTML>
nospor
1) Pokaz jeszcze: wpisy.tpl
2) drugi kod to index.php a ten pierwszy php to co to za plik? Nie index.php? Czemu więc kilka razy tworzysz na nowo obiekt smartiego, skoro robisz to w index.php ?
rocktech.pl
Witam.

Jak pisze nospor pokaz ile się da kodu. Bo jest pewnie masa rzeczy które robisz źle.

Mi się rzuciło w oczy to.

  1. //Tu wyświetlasz szablon
  2. $smarty->display('wpisy.tpl');
  3. $zapytanie_o_wpisy=mysql_query("SELECT userLogin, userEmail FROM uzytkownicy WHERE userAktywowany='yes' LIMIT 5");
  4.  
  5. while($a = mysql_fetch_array($zapytanie_o_wpisy))
  6.  
  7. {
  8.  
  9. $wpisy[] = $a;
  10.  
  11. }
  12.  
  13.  
  14. //A tu dopiero ustawiasz zmienną . Ma być na odwrót
  15. $smarty -> assign('wpisy', $wpisy);
Darekxp
Pierwszy kod to wpisy.php i wpisy.tpl drugi natomiast index.php i index.tpl

Co do indexu poprawiłem linijke i jest ok. Zamieniając {include file=$body} na {$body}.


Co do wyświetlania rekordów z bazy dalej błąd.

wpisy.tpl

  1. <title>{$title}</title>
  2. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  3. </head>
  4. <body>
  5. {include file='wpisy.tpl' assign="wpisy"}
  6. Lista wpisów na blogu:<br />
  7. <br />
  8. {$wpisy}
  9.  
  10. {section name=a loop=$wpisy}
  11. <i>{$wpisy[a].userLogin}</i>
  12. <b>{$wpisy[a].userEmail}</b>
  13. <br />
  14. <br />
  15. {/section}
  16. </body>
  17. </html>


wpisy.php

  1. <?php
  2.  
  3. include('configs/mysql.php');
  4. require('libs/Smarty.class.php');
  5.  
  6. $smarty = new Smarty;
  7.  
  8.  
  9.  
  10. //$smarty->force_compile = true;
  11. // $smarty->debugging = true;
  12. $smarty->caching = true;
  13. $smarty->cache_lifetime = 120;
  14.  
  15.  
  16.  
  17. //wpisy
  18. $zapytanie_o_wpisy=mysql_query("SELECT userLogin, userEmail from uzytkownicy ");
  19. while($a = mysql_fetch_array($zapytanie_o_wpisy))
  20. {
  21. $wpisy[] = $a;
  22. }
  23.  
  24. $smarty -> assign('wpisy', $wpisy);
  25.  
  26.  
  27. $smarty->assign('title','Wyswietlanie danych z bazy MySQL');
  28.  
  29. $smarty->display('wpisy.tpl');
  30.  
  31. ?>
nospor
wpisy.tpl:
{include file='wpisy.tpl' assign="wpisy"}

yyy, we wpisy.tpl ty ponownie includujesz wpisy.tpl..... przecież ty się chłopie tym zapętlasz wnieskonczonosc.
Darekxp
Gdy dam wpisy.php wyświetla

Lista wpisów na blogu:

force_compile = true; // $smarty->debugging = true; $smarty->caching = true; $smarty->cache_lifetime = 120; //wpisy $zapytanie_o_wpisy=mysql_query("SELECT userLogin, userEmail from uzytkownicy "); while($a = mysql_fetch_array($zapytanie_o_wpisy)) { $wpisy[] = $a; } $smarty -> assign('wpisy', $wpisy); $smarty->assign('title','Wyswietlanie danych z bazy MySQL'); $smarty->display('wpisy.tpl'); ?>


Więc co jest nie tak, że nie wyświetla poprawnie danych z bazy?
nospor
Cytat
Gdy dam wpisy.php wyświetla

Czy ja ci kazałem ten kod:
{include file='wpisy.tpl' assign="wpisy"}
zastepować tym:
{include file='wpisy.php' assign="wpisy"}
? Gdzie tak napisałem??

Masz wywalić całkowicie to:
{include file='wpisy.tpl' assign="wpisy"}
po co to w ogóle robisz? Strzelasz czy masz jakiś ukryty w tym cel?
Darekxp
Już działa, wielkie dzięki za wskazówki:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.