Anzahl der Schleifendurchläufe begrenzt?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anzahl der Schleifendurchläufe begrenzt?

    Hallo zusammen!
    ich hoffe, das folgende Frage nicht schonmal gestellt wurde, die Suceh hat zumindest nichts ergeben:

    also ich habe folgendes Problem:

    PHP-Code:
    echo "kontrolle1<br>";
    $anzahl 10000;
    $j=0;
    for(
    $i=1;$i<=$anzahl;$i++) {
        
    $testarray[$j] = array("test1" => $i,
                               
    "test2" => $j
                              
    );
        
    $j++;
    }
    echo 
    "kontrolle2<br>"
    der code an sich ist wenig sinnvoll, darum gehts mir auch nicht.
    wenn jetzt nämlich $anzahl auf 20000 setze, sehe ich nur noch eine weiße seite. weder kontrolle1, noch kontrolle2 wird ausgegeben.
    ein ähnliches problem, habe ich in einem wesentlich komplexeren zusammenhang, wo ab einer gewissen schleifendurchlaufzahl die seite garnicht mehr angezeigt wird (so, als würde sie nicht existieren)

    es gibt ziemlich sicher keinen timeout, da das script nach weniger als 1-2 sekunden fertig ist. außerdem müsste bei einem timeout ein Fatal error angezeigt werden... wird er aber nicht

    ich hab keine ahnung, wodran es liegen könnte, vielleicht weiß einer von euch etwas?

    danke schonmal

  • #2
    Wenn du die Zahl hochsetzt, es quasi nichts passiert, und du sie wieder runtersetzt, geht es dann wieder?
    Ich habe das ganze mal lokal laufen lassen, und festgestellt das mein Speicher auf 1,4GB hochging, dortauch verblieb und mir erst nach einer sehr langen Zeit was anzeigte. (Ganzer PC wurde spürbar sehr langsam)

    Interessieren würde mich das nun auch mal.

    Kommentar


    • #3
      Also mit $anzahl = 20000 dauert der Seitenaufbau bei mir gerade mal 1,2 Sekunden.
      Hab mir testweise mal $i und $j bei jedem Durchlauf ausgeben lassen (Dauer 12 Sekunden). Funktioniert einwandfrei.
      Vielleicht ist dein Rechner einfach zu schwach?
      mfg - sagg

      Kommentar


      • #4
        Hm, ich hatte das Problem erst als ich es auf 50000 hochgesetzt habe.
        Zu schwach, die CPU ist ja nicht das Problem (AMD Athlon 64 3000+(getaktet auf fiktiven 4200)), Speicher habe ich auch 2 GB, fakt ist aber ja das diret ca. 1,3 GB dauerhaft vom apache belegt wurden und alles verdammt langsam war.

        Kommentar


        • #5
          Error_reporting auf E_ALL setzen, alles aus der Schleife raus, um nicht an Speichergrenzen zu kommen, Anzahl Schleifendurchläufe nicht zu hoch wählen, um nicht an Zeitgrenzen zu kommen, dann sollte die Ausgabe auch komlpett sein.

          Kommentar


          • #6
            Lol, das finde ich jetzt mal witzig.

            Bei 50000 (ohne Ausgabe) dauert der Seitenaufbau 2,797 Sekunden.

            Rechner: AMD 2500+ (auf 3200+ getaktet, entspricht 2,2 GHz), 512 MB Ram und der Apache zieht nicht mal 200 MB Ram.

            *edit*
            huch, ich sehe gerade das ich nciht mit 50000, sonder gleich mit 500000 getestet habe. Das wird ja immer schöner.
            Zuletzt geändert von sagg; 08.01.2006, 15:28.
            mfg - sagg

            Kommentar


            • #7
              Habe ich nun auch nichtmehr, habe den Fehler, denke ich.
              Ich habe das 1. angefangen mit dem 10k Wert, Anschliessend vertippt und 10Mio rausgemacht und dann wieder runter auf 50k.
              Hab total übersehen das dort jedesmal Arrays initialisiert werden, was wohl den Speicherbedarf erklärt.

              Kommentar


              • #8
                ich habs nicht auf meinem rechner, sondern auf meinem gemieteten webspace getestet...

                natürlich liegts an den schleifendurchläufen, aber die kann ich so ohne weiteres nicht absenken...

                habe aber denke ich den fehler (mit hilfe von 'nem kumpel) gefunden:
                die arrays brauchen einfach zuviel speicher, der vom apache her begrenzt ist.

                wenn ich nach dem erhöhen der anzahl die anzahl wieder runtersetze, gehts übrigens

                naja... muss ich mir mal was überlegen

                trotzdem danke

                Kommentar


                • #9
                  unset() schon bekannt?

                  Kommentar


                  • #10
                    ist es
                    wenn ich aber irgendwann das komplette array brauche, nützt mir auch unset() nichts

                    Kommentar


                    • #11
                      Darf ich fragen wozu du ein Array mit 20.000 Datensätzen brauchst?
                      mfg - sagg

                      Kommentar

                      Lädt...
                      X