Joachim: memory_limit und imagecreatetruecolor bei 1&1

moin,

ich habe bei einem Kunden mit 1&1-Account ein Bildverarbeitungsscript laufen, und musste feststellen, dass dieses bei imagecreatetruecolor sang und klanglos abbricht, wenn die Parameter eine bestimmte Bildgrösse überschreiten. Irritiert hat mich hierbei, dass keinerlei Fehlermeldung zurückgeliefert wurde, der Quellcode enthielt lediglich eine "1" (auch bei error_reporting E_ALL).

Ist das normal, dass sich ein Überschreiten des memory_limits so auswirkt, oder ist das 1&1 spezifisch? Ist es überhaupt das memory_limit, aber was sollte es sonst sein?

Gruesse, Joachim

--
Am Ende wird alles gut.
  1. Moin!

    ich habe bei einem Kunden mit 1&1-Account ein Bildverarbeitungsscript laufen, und musste feststellen, dass dieses bei imagecreatetruecolor sang und klanglos abbricht, wenn die Parameter eine bestimmte Bildgrösse überschreiten. Irritiert hat mich hierbei, dass keinerlei Fehlermeldung zurückgeliefert wurde, der Quellcode enthielt lediglich eine "1" (auch bei error_reporting E_ALL).

    Werden dir ansonsten denn Fehlermeldungen angezeigt? Also auch die mit anderen Ursachen, z.B. Syntaxfehler? Wenn nein, könnte es daran liegen, dass die Fehler nicht an den Browser, sondern an das Logfile geschickt werden.

    Die Ausgabe der Funktion phpinfo() sagt dir dazu mehr. Stichworte: display_error, log_error.

    Ist das normal, dass sich ein Überschreiten des memory_limits so auswirkt, oder ist das 1&1 spezifisch? Ist es überhaupt das memory_limit, aber was sollte es sonst sein?

    Du kannst mit der Funktion ini_get() die aktuell wirksame Einstellung für das Memory-Limit ermitteln. Daraus ergibt sich dann direkt die ultimativ maximal mögliche Bildgröße unter besten Bedingungen (d.h. in der Regel muss deine maximale Bildgröße kleiner sein, weil du ja auch noch Platz für andere Variablen brauchst). Für den Byteverbrauch des Bildes darfst du rechnen: Pixelzahl X * Pixelzahl Y * 3 Byte. Ein Bild 2000 * 2000 Pixel benötigt also 12 MB. Das Memory-Limit sollte deshalb deutlich darüber liegen.

    - Sven Rautenberg

    1. Hi,

      Stichworte: display_error, log_error.

      ans error log komme ich bei denen afaik eh nicht ran, aber provozierte Fehler werden durchaus ausgegeben, das kanns also nicht sein.

      Ein Bild 2000 * 2000 Pixel benötigt also 12 MB. Das Memory-Limit sollte deshalb deutlich darüber liegen.

      Das tut es auch, laut phpinfo sogar 40M. Dennoch der Abbruch. Nutze ich createImage oder reduziere die Pixelzahl bei imagecreatetruecolor auf < 1200px läuft das Script anstandslos durch.

      Ich habe bei 1&1 in einer Faq gelesen, dass Scripte maximal 10 Sekunden laufen dürfen. Ich vermute hier die Ursache. Aber ohne Fehlermeldungen, das nervt.
      Oh Mann, ich liebe meinen eigenen V-Server ;-)

      Gruesse, Joachim

      --
      Am Ende wird alles gut.