kai: GB-Lib und Serverlast

hallo,

ich hab da mal ne frage. habe bei einem onlinegame an dem ich gerade arbeite sehr stark auf die GD-lib funktionen gesezt. also es werden serverseitig die landschaftskarten zum spiel erzeugt. nun hab ich einfach mal zum testen bevor es in die beta geht 10 browserfenster nebennander aufgemacht und die "karten-generierdatei" so eingestellt das sie sich alle 4 sec neu läd.
und schon geht auf meinem server der sonst fast nix zu tun hat so gut wie nix mehr.

in der datei sind sehr sehr viele :
imagecreatefrompng()
und
imagecopy()
drin...
hat jemand ne generelle info zu GD und serverlast?
und vielleicht noch ne idee was ich da machen könnte ?

danke schonmal.

  1. Hallo!

    in der datei sind sehr sehr viele :
    imagecreatefrompng()
    und
    imagecopy()
    drin...
    hat jemand ne generelle info zu GD und serverlast?
    und vielleicht noch ne idee was ich da machen könnte ?

    Was machst Du denn genau mit den GD-Funktionen? Ließe sich da nichts cachen? Natürlich ist das sehr aufwändig ständig neue Pixel-Bilder zu generieren. Wenn Du irgendwas mit Vektor-Grafik machen könntest (SVG, Java, Flash...), wäre das erheblich günstiger - zumal sowas weitgehend clientseitig laufen kann.

    Du kannst im Manual mal die Kommentare zu den GD-Funktionen durchlesen, da war das hin und wieder Thema. Etwas effizienter als GD arbeitet wohl ImageMagick, das müsstest Du dann aber über die Kommandozeile laufen lassen, das kommt dann drauf an was Du alles mit den Bildern machen willst.

    Es gibt auch eine PHP-Extension für ImageMagick (http://pecl.php.net/package/imagick), und diverse PEAR-Pakete die unterschiedliche Backands für die Bildmanipulation unterstützen: http://pear.php.net/packages.php?catpid=12&catname=Images

    Kann gut sein dass Du durch den Einsatz besserer Algorithmen das Problem ein bisschen veringern kannst (um das zu beurteilen müsste man den Code sehen), aber wirklich viel wird es vermutlich nicht helfen. Cachen würde wohl einiges mehr bringen, Vektor-Grafiken wären vermutlich das Optimum.

    Grüße
    Andreas

    --
    SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
  2. Moin!

    und schon geht auf meinem server der sonst fast nix zu tun hat so gut wie nix mehr.

    Das könnte natürlich auch ein RAM-Problem sein, denn Grafiken fressen ziemlich viel Speicher, weil sie unkomprimiert vorliegen, wenn gdlib sie manipuliert.

    in der datei sind sehr sehr viele :
    imagecreatefrompng()

    Wenn du nicht zwingend PNGs als Quelle benötigst, solltest du diese Grafiken ins gd2-Format konvertieren und mit imagecreatefromgd2() laden, das läuft schneller.

    imagecopy()
    drin...

    Ist die Frage, ob man da noch was optimieren kann. Es ist beispielsweise vom RAM-Verbrauch her besser, nicht alle ineinander zu kopierenden Bilder gleichzeitig zu laden, sondern hintereinander, und nicht mehr benötigte Bilder dann auch wieder aus dem Speicher zu entfernen.

    • Sven Rautenberg
    1. hallo
      und danke erstmal.
      aber womit stelle ich den GD2 dateien her.
      mein photoshop 7 kennt das format nicht.

      kai

      1. Hi!

        aber womit stelle ich den GD2 dateien her.

        Mit GD? ;-)

        Grüße
        Andreas

        --
        SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/