Benjamin Anders: Mal so zur Nachfrage

Hallo zusammen,

hatte mir gerade eine simple kleine Schleife zusammengeschrieben, die mir aber dann ziemlich Kopfschmerzen bereitet hat. Ich weiss zwar warum, weiss aber nicht was da genau passiert ist.

Ich hatte folgende Schleife geschrieben:

for ($i = 0;$ $i < 3; $i++)
{
  ?>
  <script language="javascript">alert('<? echo $i.".Wert: ".$wahl[$i]; ?> ');</script>
  <?
}

So ich hatte nun in der Bedingung in der for-Schleife ein $ zu viel wie man sieht. Dadurch hat der IExplorer auf einmal ueber 200 MB im Speicher besetzt, die Schleife ging immer weiter... und funktioniert dann gar nicht mehr. Also IE tot, nichts funktioniert mehr richtig... es hat gut 10 Min. gedauert um allein den Prozess abzuschiessen.

Was habe ich denn da gemacht?

Gruss,
Benni

  1. Was habe ich denn da gemacht?

    ja ein $ zuviel.
    der IE ist auf $ allergisch, da er ja vom reichen bill gates mit den vielen dollars ($) stammt.. darum erträg er es nicht, wenn man im IE ein $ zu viel hat. er, der kapitalistische IE, versucht nun den zuviel vorhanden $ zu klauen, - geht nicht, da javascript ja eine clientseitige sprache ist.
    darum kommt er in eine endlosschaufe, und crasht.

    gruss duck

  2. Hallo Benni,

    hatte mir gerade eine simple kleine Schleife zusammengeschrieben, die mir aber dann ziemlich Kopfschmerzen bereitet hat. Ich weiss zwar warum, weiss aber nicht was da genau passiert ist.

    Ich hatte folgende Schleife geschrieben:

    for ($i = 0;$ $i < 3; $i++)
    {
      ?>
      <script language="javascript">alert('<? echo $i.".Wert: ".$wahl[$i]; ?> ');</script>
      <?
    }

    Da deine Schleife die Abbruchbedingung nicht erreicht, wird das Script "endlos" weiterlaufen. Das heißt, der Webserver auf dem dein PHP läuft, schiebt dem Browser so lange den Text mit dem JavaScript-Code unter, bis der Browser aufgibt, weil kein Speicher mehr da ist. Mein Opera ließ sich übrigens dazu bewegen, die Ausgabe sinnlosen Inhaltes zu beenden, indem ich einfach auf den "Abbrechen"-Button gedrückt habe ...

    So ich hatte nun in der Bedingung in der for-Schleife ein $ zu viel wie man sieht. Dadurch hat der IExplorer auf einmal ueber 200 MB im Speicher besetzt, die Schleife ging immer weiter... und funktioniert dann gar nicht mehr. Also IE tot, nichts funktioniert mehr richtig... es hat gut 10 Min. gedauert um allein den Prozess abzuschiessen.
    Was habe ich denn da gemacht?

    Kleines $ große Wirkung. Warum das so ist, kannst du im PHP-Manual zu variablen Variablen nachlesen.

    MffG
    EisFuX

    --
    ... Suchmaschinen-Blog ...