AllesMeins: Brauche Hilfe bei Scriptoptimierung (nochmal)

Hiho,
Ich starte jetzt einfach noch einen Anlauf in der Hofnung dieses mal eine Antwort zu bekommen:

Wie vielleicht inzwischen schon einige mitbekommen haben arbeite ich zur Zeit an einem browserbasierenden Onlinespiel. Nun habe ich ein Problem, das eines meiner Scripte für den normalen Nutzer viel zu lange braucht (so um die  3 bis 4 Sekunden + Downloadzeit des Ergebnisses). Das Problem liegt in der Natur des ganzen, da ich eine Karte aus 441 Einzelbildern zusammensetzten will. Ich habe es bisher auf zwei methoden probiert. Einmal einfach die einzelbilder per tbl-bg eingebaut, das hat zu einem fast 80 KB grossen Quelltext geführt der ewig gebraucht hat bis der Browser ihn angeziegt hat. Mein zweiter Ansatz war nun ein einziges Bild im Browser anzuzeigen, das vorher von PHP aus diesen Einzelbildern zusammenkopiert worden ist... Dies ist nun das Script mit dieser langen Laufzeit. Nun meine Frage. Ist irgendwer hier der PHP recht gut beherscht bereit sich mal mein Script anzuschaun und mir zu helfen es zu optimieren? Ich habe das Script in seiner jetzigen Form mal als txt Datei hochgeladen:

http://www.startrek-bilder.de/playground/map.php.txt

Ich hoffe mal es ist halbwegs verständlich und es findet sich jemand, der etwas Zeit erübrigen kann...

Grüsse

Marc

  1. Hallo.
    Es könnte daran liegen daß du das anfangs <html> und das end </html>
    vergessen hast.
    Ebenfalls ist kein yhead> und <body> bereich geschrieben worden.

    Gruß

    1. Hiho,
      Die Scriptlaufzeit hat doch nichts mit der Sauberkeit des HTMLs zu tun. Das aber nur so nebenbei. Denn ich brauche kein <body> <head> und co. da es sich bei der Ausgabe um ein Bild handelt (das auch ordentlich per header() als solches gekenzeichnet wird)

      Grüsse

      Marc

  2. Hallo AllesMeins!

    Ich hab das Script nur überflogen - aber bei der Kürze wirds nicht viel zu optimieren geben. Ich denke, dass einerseits die Image-Funktionen ziemlich an den Resourcen zehren und andererseits die Bilder als solches entsprechend Ladezeiten benötigen.

    Kannst du ...

    1.) das generieren der Images lassen und stattdessen einfach(e) Bilder verwenden?

    2.) diese Bilder eventuell auch noch verkleinern (komprimieren, an der Qualität schrauben)?

    ich denke, das könnt klappen ;-)

    mfg

    norbert =:-)

    1. Hiho,

      1.) das generieren der Images lassen und stattdessen einfach(e) Bilder verwenden?

      Ja, kann ich. Allerdings macht kein Browser das anständig mit. Der Quelltext mit dieser Tabelle und zig <img's wird einfach viel zu riesig (so um die 80 KB alles in allem). Plus Ladezeit der einzelnen bilder da macht kein Browser mit

      2.) diese Bilder eventuell auch noch verkleinern (komprimieren, an der Qualität schrauben)?

      Das laden der Ausgangsbilder sollte ja eigentlich nicht die Laufzeit so stark beeinflussen. Denn schlieslich liegen diese ja mit dem Script auf dem Server. Es ist also nur ne Frage des Festplattenzugriffs und da sollte 1 KB oder 2 KB pro Datei nicht so nen unterschied machen.

      Marc

      1. Hallo AllesMeins!

        Vielleicht kannst du einen Link zur Testumgebung posten - dann können wir uns nicht nur an der Ursache, sondern auch am Ergebnis versuchen ...

        mfg

        norbert =:-)

        1. Hiho,

          Vielleicht kannst du einen Link zur Testumgebung posten

          Der würde dir sicherlichw enig bringen, da er 192.168.0.3 lautet :-/ Das ist nämlich ein kleiner alter Pentium mit Linux auf dem ich daran rumwerkele. Aber ich habe mal eine etwas verkümmerte Version des Scriptes (ohne Userauthentifizierung und ohne mysql-Abfragen) erstellt, welche auch alleine läuft. Das ganze läuft auch ein Stückchen schneller, da es kleiner ist und der Server auch schneller ist als mein alte rPentium, aber trotzdem find eich die scriptlaufzeit immer noch zu lang:

          http://www.startrek-bilder.de/playground/map.php

          Grüsse

          Marc

          1. Hallo Marc!

            Obwohl das Bild 126k hat, liegts nicht daran.

            Aber wozu brauchst Du so viel kleine Bildausschnitte? Zum Anklicken?

            Und wenn ja - wozu eine Tabelle? Setze einfach 10 <a><img></a> nahtlos nebeneinander und danach einfach <br>

            relativ einfache Methode ohne unnötig viel Quellcode.

            Alternative: Einfach ein einziges Image mit Imagemap - kein rukelndes Laden einzelner Bilder und trotzdem anklickbar.

            Ansonsten scheints wirklich an den Image-Funktionen von PHP zu liegen.

            Ich schau nachher nochmal vorbei,

            mfg

            norbert =:-)

            1. Hhiho,

              Aber wozu brauchst Du so viel kleine Bildausschnitte? Zum Anklicken?

              Jein. Der Trick ist das es sich dabei nur um einen Ausschnitt der Karte handelt. Wenn sich nun ein Spieler bewegt (immer um eines dieser Felder) dann bekommt er auch eine andere Karte angezeigt (eben mit einer weiteren Reihe Bilder auf der einen Seite mehr und auf der anderenS eite weniger) so das sichd er Spieler immer ind e rmitte befindet und sich die Karte um ihn herum ändert.

              Und wenn ja - wozu eine Tabelle? Setze einfach 10 <a><img></a> nahtlos nebeneinander und danach einfach <br>

              Weil darüber noch weitere Bilder müssen (Teiltransparente Gifs um verschiedene Besonderheiten (anklickbare Felder, festgelegten kurs usw. hervor zuheben). Aber auch mit <a href='link'><img src='map_images/123_123-1asdaas.jpg'></a> komme ich bei 421 Bildern (21*21) auf mehr als 27.000 Zeichen alleine dafür. Plus die Bedinung für das Spiel gibt das nen Quelltext von um die 45 KB, auf jedne Fall zu viel für viele Browser.

              Alternative: Einfach ein einziges Image mit Imagemap - kein rukelndes Laden einzelner Bilder und trotzdem anklickbar.

              Dieses einzelne Bild müsste aber erst generiert werden. Damit wären wir wieder beim selben problem. ausserdem wäre eine image-map ziemlich schwer per script dynamisch zu erstellen.

              Grüsse

              Marc