|
|||
[PHP] Probleme mit simplexml_* (Memory Exceed)
Hi Leute!
Ich hab mal wieder ein Problem. In der Vergangenheit hatte ich meine Konfigurationsvariablen in .ini-Dateien gespeichert, die ja aber einige Nachteile haben. Momentan sitze ich grad an meinem ersten Projekt, in dem ich mit Konfigurationsvariablen per .xml-Datei arbeite. Allerdings habe ich nun plötzlich anscheinend Probleme mit der XML-Verarbeitung per SimpleXML... Sind schon so nervig, dass ich mir überlegt habe, nun auf Datenbank umzusteigen -.-" Aber will ich mal mehr ins Detail gehen: Mein eigentliches Problem begann mit einem Code:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8192 bytes) Das war nur der grobe Ablauf, dazwischen hatte ich an verschiedenen anderen Stellen der gleichen Datei den gleichen Fehler. Ein sehr erfahrener PHP-Programmierer hatte mir noch geraten, in der Fehlerbehandlungsfunktion, wie sie irgendwo unter simplexml_load_file() auf PHP.net verlinkt ist (display_xml_error()) die Fehlervariable nur zu referenzieren, weil sie dann keinen eigenen Speicher verbraucht. Aber hat nichts geholfen... Ich bin ratlos!! Vor diesem Fehler hatte ich auch noch gar keine Ausgabe und habe mithilfe des W3C_Validators rausgefunden, dass die Kompression irgendwie nicht gepasst hat. Jetzt habe ich in meinem lokalen Apache bzw. PHP zlib_compression ausgestellt, woraufhin ich diese Fehler bekam... Keine Ahnung ob das zusammenhängen kann. Hatte auch mit ob_start() und ob_end_flush() gearbeitet, sind jetzt auskommentiert... Ich bin ratlos... Hoffe, ich habe mich nicht zu kompliziert ausgedrückt und irgendwer kann mir helfen...
__________________
MfG Markus Köhler |
Sponsored Links |
|
||||
Wie umfangreich ist denn diese XML-Datei? Ohne den Quellcode wird es natürlich schwierig, den Fehler zu finden.
__________________
Mit freundlichen Grüssen "Pascolo" Guter Webspace eSport Topliste Meine Lesezeichen Meine Spielwiese Geändert von Pascolo (04.06.2010 um 01:23 Uhr) Grund: Ergänzung |
Sponsored Links |
|
|||
Jap, 'ne halbe Seite, hatte ich geschrieben.
Aber kein Problem, hier den Code: config.xml Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <config> <site> <https_prefix>https://ssl-id.de/</https_prefix> <development_host>test.p-its.biz</development_host> <production_host>p-its.biz</production_host> <api_host>api.p-its.biz</api_host> <local_str>selfip</local_str> </site> <db> <development> <host>p-its.selfip.biz</host> <user>root</user> <password>millich</password> <database>pits</database> </development> <production> <host>rdbms.strato.de</host> <user>U695508</user> <password>millich13</password> <database>DB695508</database> </production> </db> <lang> <allowed_langs>de,en</allowed_langs> </lang> <page> <search_path>./pages/</search_path> <title_separator>::</title_separator> <title_suffix>Personal IT-Services</title_suffix> <style_path>./style/pages/</style_path> </page> <rights> <admin_pages>admin</admin_pages> <user_pages>user</user_pages> <prospect_pages>prospect</prospect_pages> <buyer_pages>buyer</buyer_pages> </rights> </config> PHP-Code:
__________________
MfG Markus Köhler |
|
||||
Möglich, dass du vorher den Speicher schon so dermaßen voll haust, dass die kleine config da nicht mehr reinpasst?
Folgender Test läuft ohne Probleme: PHP-Code:
PS: Ich würde zumindest die Passwörter aus der config entfernen und nun auch ändern. |
|
|||
Davor...
lade ich die Interfaces, dann die Base-Klasse, eine Dateiverarbeitungs-Klasse (um alle Dateien rekursiv inkl. Pfad in einen Array einzulesen), dann schon die config-Klasse. Danach... die Datenbankverbindungs-Klasse, eine Datum/Zeit-Klasse, eine Sprachenumschaltungs-Klasse (übrigens konnte ich hierin nie Cookie-Probleme lösen im aktuellen Projekt, bin jetzt zu einer Lösung ohne Cookies übergegangen, die aber sicher nicht so benutzerfreundlich ist), dann noch dpe Seiten-Klasse, die eigentlich alle Inhalte läd, und zu guter Letzt die User-Klasse, die Login und alles was damit zu tun hat regelt... Dies alles wird umrundet von einer Abfrage, ob statt der ganzen Seite nur die IP oder der Hostname des Users als Plain-Text zurückgegeben werden soll (für bestimmte Funktionen meiner Software-Projekte, die dann einfach diese URL aufrufen können, oder ob ich nur phpinfo() will statt meiner Website. Dann werden die Locale und Zeitzone gesetzt, ich definiere 3 Konstanten, starte die Session, habe enie Autoloading-Funktion für die Klassen vor den Klassen selbst, dann danach ein error_reporting()-Switch, Ausgabe von 3 Headern, Bestimmung des Last-Modified-Datums (angelehnt an die Lösung auf PHP.net), und letztendlich wird der HTML-Code der Seite von ob_start() und ob_end_flush() umrundet, weil ich bisher erstmal 2 Variablen im HTML-Code ersetzen wollte, also zur Nachverarbeitung des Quellcodes. Das ist praktisch die ganze Site...
__________________
MfG Markus Köhler |
|
||||
Das hört sich alles nicht besonders Speicherintensiv an. Um eigene Probleme auszuschließen würde ich einfach mal schauen, wieviel Speicher PHP an bestimmten Stellen verbrät. Mit memory_get_usage() kannst Du Dir den Speicherverbrauch anzeigen lassen.
Ich würd's zunächst einmal zu Beginn des Scriptes ausgeben und einmal direkt vor der Zeile, die die Fehlermeldung produziert. Wenn der Speicherverbrauch dort bereits recht hoch ist, dann würde ich versuchen das Problem Stück für Stück einzugrenzen. Vielleicht hat ja jmd. anders noch 'ne Idee, aber ich seh' da gerade keine kritischen Dinge. |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
paar Probleme mit dem CSS Layout | SimonK. | CSS | 6 | 05.10.2008 15:57 |
IE: Probleme mit ul-Menü | Ares | CSS | 4 | 18.10.2006 12:42 |
[PHP] Probleme mit .htaccess und include(); | Ahoj | Serveradministration und serverseitige Scripte | 4 | 01.02.2006 15:13 |
[PHP] Probleme mit include | schdeffan | Serveradministration und serverseitige Scripte | 4 | 17.09.2005 13:39 |
Probleme mit Mehrspaltigem Layout | RalfEggert | CSS | 0 | 27.09.2004 17:39 |