Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie gegen Endlosschleife schützen?

Einklappen

Neue Werbung 2019

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

  • Wie gegen Endlosschleife schützen?

    Moin,

    gibt es eine Möglichkeit, mich gegen Endlosschleifen schützen? Oder aus einer solchen Auszusteigen z.B. bei Zeitüberschreitung?

  • #2
    gibt es eine Möglichkeit, mich gegen Endlosschleifen schützen?
    Schreibe Tests für deinen Code.

    Oder aus einer solchen Auszusteigen z.B. bei Zeitüberschreitung?
    Das macht PHP von selbst.

    Kommentar


    • #3
      Ein Schleife läuft immer so lange, wie die entsprechenden Bedingungen erfüllt sind.
      Bei korrektem Design, sollte es keine Endlosschleifen geben.

      Es steht dir natürlich frei Zusatzbedingungen einzubauen, die die Schleife auf eine maximale Anzahl von Durchläufen beschränken oder nach einer gewissen zeit die Schleife abbrechen.
      Aber das sind eigentlich nur Symptombehebungen.

      Wenn du unbeabsichtigte Endlosschleifen hast, dann gibt es irgendwo vermutlich einen Logikfehler in der Prüfung der Bedingungen

      Kommentar


      • #4
        Ein Schleife läuft immer so lange, wie die entsprechenden Bedingungen erfüllt sind.
        Bei foreach() mit Generatoren sollte man unbedingt darauf achten, dass der Generator selbständig abbricht (=> korrektes Design).

        Kommentar


        • #5
          Wenn man vorher aussteigen will, warum auch immer

          PHP-Code:
          <?php
          echo 'wait and see' "<br>\n";

          do{
              
          sleep(1); // or do whatever you want to do

              
          $time microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];

              
          // exit is here
              
          if ($time>10){
                  echo 
          "Process Time: {$time} seconds";
                  break;
              }

          }while (
          true);   // endless loop
          ?>

          Kommentar


          • #6
            Zitat von mentle Beitrag anzeigen
            gibt es eine Möglichkeit, mich gegen Endlosschleifen schützen?
            Indem du einfach keine produzierst

            Zitat von mentle Beitrag anzeigen
            Oder aus einer solchen Auszusteigen z.B. bei Zeitüberschreitung?
            Du kannst natürlich set_time_limit nutzen um die maximale Ausführungszeit festzulegen.
            [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

            Kommentar


            • #7
              Lust auf einen Schwanzvergleich?

              Berechnet werden soll die Fakultativ einer Zahl innerhalb eines Zeitrahmens,
              Ich lasse es mal bei 10 Sekunden.

              Code kopieren und aufrufen
              PHP-Code:
              echo '<h3>wie viel Fakultät in 10 Sekunden berechnet werden kann</h3>' "<br>\n";

              $erg ="1";
              $i=1;

              do{
                  
              $time microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];

                  if ( 
              $time 10 ){
                      break;
                  }

                  
              $erg bcmul$erg, (string)$i);
                  
              $i++;

              }while (
              true);

              echo 
              "Zeit: {$time} seconds<br>";  
              $digits strlen($erg);
              echo 
              "Fakultät von {$i} hat eine Länge von {$digits} Ziffern."
              Ich leg mal vor mit meiner alten Windowsdose und am Start ist PHP 5.6:

              Zeit: 10.000375032425 seconds
              Fakultät von 8958 hat eine Länge von 31512 Ziffern.

              Da geht doch sicherlich noch mehr?

              Kommentar


              • #8
                Zeit: 10.000830888748 seconds
                Fakultät von 11981 hat eine Länge von 43660 Ziffern.

                ein ziemlich beschäftigter Laptop von 2010 (Asus G73 SW, Core i7 2620 QM ) ... Xampp mitPHP Version 5.6.11
                "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                Kommentar


                • #9
                  Zeit: 10.00056385994 seconds
                  Fakultät von 16845 hat eine Länge von 24202 Ziffern.

                  Asus Rog Xampp und Php 7.1.16

                  Kommentar


                  • #10
                    Zeit: 10.000687837601 seconds
                    Fakultät von 20677 hat eine Länge von 80250 Ziffern.

                    Ubuntu 17.10 + PHP 7.1.15

                    Kommentar


                    • #11
                      Zeit: 10.000153064728 seconds
                      Fakultät von 20260 hat eine Länge von 78452 Ziffern.


                      Ist das jetzt gut oder schlecht?
                      Bin php anfänger
                      Ich mach keine Rechtschreibfehler - ich schreib Freestyle!
                      Erreichbar in mein Javascript-Forum und in Facebook-Chat

                      Kommentar


                      • #12
                        Zeit: 10.000197172165 seconds
                        Fakultät von 22073 hat eine Länge von 86295 Ziffern.

                        SubEthaEdit @ macOS 10.13 + PHP 7.1

                        Kommentar


                        • #13
                          Zeit: 10.000648975372 seconds
                          Fakultät von 28316 hat eine Länge von 113765 Ziffern.

                          win7 + PHP 7.1

                          Ist das jetzt gut oder schlecht?
                          Würde mich jetzt auch noch interessieren.

                          Kommentar


                          • #14
                            ist ja niedlich, wie ihr eure OS und PHP version postet, dabei dürfte es weit stärker am CPU-Herz des Systems hängen ...^^
                            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                            Kommentar


                            • #15
                              PHP 5.5:
                              Zeit: 10.000732898712 seconds
                              Fakultät von 25375 hat eine Länge von 100740 Ziffern.

                              PHP 7.0:
                              Zeit: 10.000395059586 seconds
                              Fakultät von 25826 hat eine Länge von 102728 Ziffern.

                              Da kribbelt es ja in den Fingern das mal auf einem von den guten Servern laufen zu lassen.
                              [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                              [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                              Kommentar

                              Lädt...
                              X