PHP, externe Hosts und das gute alte RAM-Limit

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP, externe Hosts und das gute alte RAM-Limit

    Hallo Leute,

    ich habe mir ein kleines PHP-Script geschrieben, dass mehrere Feeds nimmt, diese parst und gewisse Inhalte dann in eine Datenbank schreibt. Blöderweise kann ich das momentan nur auf meinem eigenen Webserver laufen lassen, der kommt von 1&1. Anscheinend frisst das ganze aber etwas zu viel RAM, so das das Script irgendwann vom Server anscheinend beendet wird (automatisch, ich bekomme auch keine Exception oder sonstiges).
    Nun habe ich also etwas rumgespielt und bin dabei über

    Quellcode

    1. unset($parser)


    gestolpert (der Parser ist samt den Datenbank-Methoden zum schreiben bzw. updaten in eine eigene Klasse ausgelagert, von der ich dann in einer foreach-Schleife mehrere Instanzen erstelle und diesen dann per Methodenaufruf den Befehl gebe, ihrer Aufgabe nachzugehen). Eigentlich war es von mir so gedacht, dass ich dann, wenn der Feed geparst und in die Datenbank geschrieben wurde, ich das Objekt einfach release und somit den Speicher wieder frei mache für das nächste Objekt und so weiter und so fort. Ich habe meine Methoden an sich auch überprüft, da läuft alles (ich habe das getestet, indem ich die Anzahl der geparsten Feed-Items begrenze auf eine vergleichsweise kleine Anzahl, dann läuft alles so durch wie ich es mir gedacht habe, ich will aber halt alle Items und nicht nur die ersten 10...)
    So nun meine eigentliche Frage:

    Wie kann ich den RAM wieder freigeben? Also wie entlasse ich ein Objekt richtig, damit auch wirklich alle Refrenzen und Co., was das Objekt halt so hatte, endgültig gelöscht werden und ich demnach wieder den Speicherplatz von neuem füllen kann?
    Ich hoffe ihr könnt mir helfen, das wäre echt wichtig!
    Viele Grüße
    scriptedSheep
  • Die meisten (alle?) Provider haben Laufzeitbegrenzungen für Scriptsprachen. Z.B. 30 sec pro *.php-Script. Das kannst du umgehen indem du ein 'Ladescript' hast, das die payload an ein 'Parserscript' übergibt. Dieses ruft nach erfolgtem Parsing wieder das Ladescript auf ... Wer das Datum lesen kann, ist klar im Vorteil ;)
    MfG, blue
  • Ein Versuch wäre

    Quellcode

    1. ignore_user_abort(true);
    2. set_time_limit(0);
    wert :)

    Aber vorsicht ! Eine Schleife läuft damit auch ewig bzw. bis andere Limits erreicht sind.
    _____________________________
    Alle Angaben ohne Gewähr :)

    On the internet you can be anything you want. It's strange that so many people choose to be stupid.


    Superbientem animus prosternet
  • huch - hab nicht darauf geachtet da vor mir bereits jemand geantwortet hat :)
    _____________________________
    Alle Angaben ohne Gewähr :)

    On the internet you can be anything you want. It's strange that so many people choose to be stupid.


    Superbientem animus prosternet