memory-fehler / mein script frißt einfach zuviel davon ?
daniel
- php
hallo alle zusammen,
ich habe hier den ganzen morgen an einem kleinen script rumgeschrieben, mit dem ich gern mehr oder weniger dynamisch breadcrumbs ausgeben will, ohne eine DB dazu zu benutzen.
als ich fertig war, habe ich folgende fehlermeldung bekommen: Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 524288 bytes) in /www/jonny-flash/include/connection.inc.php on line 63
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 64 bytes) in Unknown on line 0
ich "entwickle" hier auf einer alten kiste, einem alten pentium200 mit 128mb ram auf dem eine linux-minimal installation läuft. bisher hatte ich damit noch nie probleme... ;-)
vielleicht kann mal jemand einen blick auf das script werfen, und mir sagen, ob ich da wirklich einen so crassen speicherfresser geschrieben habe ??
die beiden "großen" array am anfang sorgen dabei nur für die umsetzung der verzeichnisnamen zu "richtigen" Ausgaben.
//UMSETZUNG VERZEICHNISNAMEN ZU BREADCRUMB-ELEMENTEN $label = array( "sites" => "Sites", //ABOUTME "aboutme" => "About Me", "bilder" => "Bilder", "blog" => "Blog", "links" => "Lieb-Links", "living" => "Living", "vita" => "Vita", "playlist" => "Playlist", //ADMIN "admin" => "Administration", //CONTACT "contact" => "Contact", "gbook" => "Gästebuch", "mail" => "E-Mail Formular", //IMPRESSUM "impressum" => "Impressum", //SEARCH "sitesearch"=> "Sitemap und Suchfunktion", //WEBWORX "webworx" => "WebWorX", "howto" => "Tutorials und HowTo's", "html" => "HTML/CSS", "linux" => "Linux", "mysql" => "MySQL", "php" => "PHP", "webdesign" => "Webdesign", "leistungen"=> "Leistungen", "playground"=> "My Playground", "referenzen"=> "Referenzen", "software" => "Software" );
//UMSETZUNG VON INCLUDE-DATEIEN ZU BREADCRUMBS $label_inc = array ( //INCLUDES VON WEBWORX > HOWTO > PHP "mailer_tut" => "Formmailer mit PHP" );
// VERZEICHNIS UND DATEINAME $url = explode("/",$_SERVER['PHP_SELF']);
//INITIALISIEREN VON VARIABLEN $x=1; $this_dir = array();
//VERZEICHNISSE ANFÜGEN while($url[sizeof($url)-$x]!="sites") { array_push($this_dir,$url[count($url)-$x]); $x++; }
//ARRAY UMDREHEN $this_dir=array_reverse($this_dir);
//ELEMENTE ZÄHLEN $pfadtiefe = count($this_dir)-1;
//HOME-LINK FESTLEGEN $breadcrumb_string = "<b>Du befindest dich hier :</b> <a href='/index.php'>Home</a>";
//DATEIPFAD AUSGEBEN $pfad="/sites";
for($x=0; $x<$pfadtiefe; $x++) { $pfad=$pfad."/".$this_dir[$x]; $breadcrumb_string.=" > <a href='$pfad/'>".$label[$this_dir[$x]]."</a> "; $title=$label[$this_dir[$x]]; }
//FALLS DATEI INCLUDIERT WIRD, TITEL ANHAENGEN if(isset($go)) { $breadcrumb_string.=" > <a href='".$_SERVER['REQUEST_URI']."'>".$label_inc[$go]."</a>"; $title = $label_inc[$go]; }
ich habe mir bisher noch nie großartig gedanken gemacht, welche ressourcen meine scripte verbrauchen, da sie immer recht klein waren. aber jetzt...?
naja, vielleicht hat ja der eine oder andere einen tipp für mich parat.... danke im voraus... !!
grüße, daniel
Nur ne kleine Anregung. Schon mal geschaut ob du in dem Script vielleicht irgend eine Schleife hast die nicht beendet wird und dann ins unendlich läuft und dabei den memory vollmüllt?
BOING !!
oh mann, das nenn ich mal betriebsblindheit ;-))
verdammt ;-))
in zeile 63 ist diese while-schleife, die jedes verzeichnis an das array anfügt. wenn ich auf "home" gehe, gibt es kein "sites" verzeichnis, denn lieht eine ebene tiefer....
dummerweise läuft die schleife aber eben solange bis dieses "sites" gefunden wird....
naja, vielleicht sollte ich mal ne pause machen ;-))
trotzdem danke !!
grüße,
daniel