Tom: ist html_entity_decode() in php 4.3.1 buggy?

Hallo,

da hatte ich mich gefreut, dass es eine fertige Funktion gibt, um die aus dem Netz gegrabbten Daten wieder Datenbanktauglich zu machen...

Aber das Script stürzt total ab. Die Datei kann nicht angezeigt werden bekomme ich als Antwort.

Weiß jemand mehr?

Grüße

Tom

  1. Hallo du da draußen,

    Das Problem hatte ich auch schon mal. Bei mir lag es daran, dass ich versucht habe, eine 10 MB große Datei in eine Variable zu laden. Ich glaube, da gibt es irgendeine Begrenzung, dass alle Variablen eines Scripts maximal 1 MB Speicher oder so ähnlich verwenden dürfen. Könnte es eventuell bei dir eine solche Ursache haben?

    Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de/),
    Candid Dauth (Dogfish)

    --
    Verantwortlich für Falschaussagen ist ausschließlich mein Gehirn. Hinweise auf solche gebe ich ihm aber gerne weiter.
    Let's close our eyes and see what happens.
    http://dogfish.net.tc/
    1. Hallo du da im Radio *ähh* internet,

      Das Problem hatte ich auch schon mal. Bei mir lag es daran, dass ich versucht habe, eine 10 MB große Datei in eine Variable zu laden. Ich glaube, da gibt es irgendeine Begrenzung, dass alle Variablen eines Scripts maximal 1 MB Speicher oder so ähnlich verwenden dürfen. Könnte es eventuell bei dir eine solche Ursache haben?

      Das hatte ich ja auch gedacht, aber dann käme doch ggf eine Meldung mit Speicher ist alle oder so. Das habe ich schon mehrfach provoziert. Die Dateien, die ich zurückübersetze haben allerhöchstens 8kb und da ich da Pedant bin, gebe ich die Ressourchen auch immer brav zurück.

      Ne Idee wärs aber auf jeden Fall, da noch mal zu forschen. Vielleicht gibt ja die Funktion den Speicher nicht zurück. Das war _meine_ Eingebung. Dann ist si aber buggy.

      Wie könnte ich das nun checken?

      Grüße

      Tom

      1. Hallo ihr zwei,

        Das Problem hatte ich auch schon mal. Bei mir lag es daran, dass ich versucht habe, eine 10 MB große Datei in eine Variable zu laden. Ich glaube, da gibt es irgendeine Begrenzung, dass alle Variablen eines Scripts maximal 1 MB Speicher oder so ähnlich verwenden dürfen. Könnte es eventuell bei dir eine solche Ursache haben?

        Das hatte ich ja auch gedacht, aber dann käme doch ggf eine Meldung mit Speicher ist alle oder so. Das habe ich schon mehrfach provoziert. Die Dateien, die ich zurückübersetze haben allerhöchstens 8kb und da ich da Pedant bin, gebe ich die Ressourchen auch immer brav zurück.

        Ne Idee wärs aber auf jeden Fall, da noch mal zu forschen. Vielleicht gibt ja die Funktion den Speicher nicht zurück. Das war _meine_ Eingebung. Dann ist si aber buggy.

        Wie könnte ich das nun checken?

        Mit PHP allein vermutlich garnicht. Ich könnte mir allerdings vorstellen, dass (ungetestet --> für jede Idee, die hier folgt, und ausprobiert wird, übernehme ich keine Haftung *gg*) man a) ein "Hüllen"-Script schreibt, das die aufgerufenen Scripte auf Ausführungszeit, Speicherhunger etc. überwacht. Eventuell kannst du auch einfach mal schauen, wieviel Speicher das Apache-Child braucht, das gerade dein Script behandelt.

        Grüße aus Barsinghausen,
        Fabian

      2. Hallo du da draußen,

        Das hatte ich ja auch gedacht, aber dann käme doch ggf eine Meldung mit Speicher ist alle oder so. Das habe ich schon mehrfach provoziert. Die Dateien, die ich zurückübersetze haben allerhöchstens 8kb und da ich da Pedant bin, gebe ich die Ressourchen auch immer brav zurück.

        Es kommt auf irgendeine Konfiguration im Server an, ob eine Fehlermeldung ausgegeben wird. Ich hatte es schon, dass dann so ein Internal Server Error kommt, manchmal eine normale PHP-Fehlermeldung, aber auch, dass eine Meldung im Konqueror kam, in der "Der Kontakt zum Server ist abgebrochen" stand. Deswegen hatte ich auch vermutet, dass es diese Ursache haben könnte, da dieser Fehler im IE vermutlich zu dieser Fehlermeldung führen würde.
        Dass die Dateien höchstens 8 KB groß sind, muss nichts zu sagen haben. So kann es zum Beispiel sein, dass die Funktion unsauber programmiert wurde und so in ihr ein Haufen Variablen angelegt werden. Auf diese Weise könnten schon kleine Größen einen hohen Speicherverbrauch verursachen. Dadurch wäre es auch zu begründen, dass du es mit einer eigenen Funktion lösen konntest. Denn die hast du dann wahrscheinlich nicht so speicherverschwendend programmiert, wie die von PHP es dann vielleicht ist.

        Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de/),
        Candid Dauth (Dogfish)

        --
        Verantwortlich für Falschaussagen ist ausschließlich mein Gehirn. Hinweise auf solche gebe ich ihm aber gerne weiter.
        Let's close our eyes and see what happens.
        http://dogfish.net.tc/
  2. Hallo!

    Aber das Script stürzt total ab. Die Datei kann nicht angezeigt werden bekomme ich als Antwort.

    Weiß jemand mehr?

    Tja, entweder Du guckst unter http://bugs.php.net/search.php?cmd=display&search_for=html_entity_decode&x=0&y=0 ob das Problem bekannt ist, oder Du liest mal </faq/#Q-07>.

    Grüße
    Andreas

    1. Hi Andreas,

      ... oder Du liest mal </faq/#Q-07>.

      Du meinst also, mein Server hat nur keine Lust zu antworten? :-))

      Grüße

      Tom

      PS: ich werde den Bug mal melden, wenn noch nix drinsteht. Wusste leider nicht wie und wo.

      1. Hi!

        ... oder Du liest mal </faq/#Q-07>.

        Du meinst also, mein Server hat nur keine Lust zu antworten? :-))

        Dein komplette Problembeschreibung ist folgende: "Aber das Script stürzt total ab. Die Datei kann nicht angezeigt werden bekomme ich als Antwort."

        Das kann 1000de Ursachen haben.

        Besonders interessant wäre der genaue Wortlaut der Fehlermeldung, und dazu das Stückchen Quellcode welches diesen Fehler hervorruft. Außerdem wäre es in diesem speziellen Fall durchaus interessant wie die Daten aussehen die Du mit der Funktion bearbeitest, oder ob Du geprüft hast ob tatsächlich die richtigen Daten übergeben werden...

        PS: ich werde den Bug mal melden, wenn noch nix drinsteht. Wusste leider nicht wie und wo.

        Ja, aber vorher solltest Du wirklich absolut sicher gehen dass es a) überhaupt ein Bug in PHP ist, und b) dass dieser Bug noch nicht gemeldet wurde. Vielleicht solltest Du mal eine aktuellere Version probieren, von http://snaps.php.net/, vielleicht wurde der Bug ja bereits behoben - wenn es denn einer ist.

        Grüße
        Andreas

        1. Hallo Andreas, hallo @all,

          php gibt gar keine Fehlermeldung mehr aus. Der Apache sendet (vermutlich) einen Fehlercode, denn die Meldung generiert der Browser, und zwar schon ziemlich schnell. Da ich in diesem Script ca. 1200 Dateien parsen lasse umd die Rohdaten wieder zu extrahieren, hatte ich max_execution_time hochgesetzt. Das lief alles reibungslos, bis mir auffiel, dass noch die HTML-Entities zurückübersetzt werden müssen.

          Aufgrund Deines Tipps mit der Buglist vermute ich, dass der Fehler durch leere Funktionsargumente ausgelöst wird. Steht ja nicht überall was im entsprechenden Tabellenfeld drin.

          Mit der selbstgebastelten Funktion aus dem PHP-Manual klappt es jetzt.

          Ne neuere Version kommt erst in Frage, wenn auf dem Produktivserver auch umgestellt wird. Die sollten immer die selbe Version haben. Und eine Umstellung kostet jedes Mal sehr viel Zeit und Nerven.

          Hab nochmals Dank für den Tipp

          Tom