Schleife mit Wartezeit

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

  • Schleife mit Wartezeit

    Hallo Leute,

    Da wir noch einen MOnat warten müssen bis wir unseren Server mit Cronjobs beziehen können, möchte ich doch schonmal die Scripts die dann später alles abarbeiten schonmal fertigstellen und testen.

    Und zwar wäre es toll wenn mir jemand eine Schleife zeigen könnte mit der ich in bestimmten abstänen eine Funktion abarbeite.
    hierzu soll einfach alle 4 Minuten (240 sekunden) eine Function aufgerufen werden die dann das scheduling abarbeitet .
    Ich hab das mit dem Sleep() befehl probiert allerdings hängt sich das script dabei immer auf.
    PHP-Code:
    Do
    {
        
    Schedule_start() ;
        
    sleep(240) ;
        
    $zaehler++ ;
    }
    While (
    $zaehler 15
    Diese Schleife sollte also testweise 1 Stunde arbeiten und in dieser Stunde alle 4 Minuten das Scheduling aufrufen, was später per Cronjob gehen soll.
    Wie gesagt, das soll nur für mich zum testen sein ob alles richtig abgearbeitet wird bevor es losgeht.

    Vielen dank für eure hilfe zu einer funktionierenden Lösung.

    Wie gesagt das ich das browserfenster eben ne stunde offen lassen muss ist nicht das problem, das nehme ich gerne in kauf um das ganze zu testen, besser als garnichts ,)
    - Carpe Noctem -

  • #2
    hi

    wenn es kein problem ist das browser fenster offen zu halten, dann mach doch ein htmlrefresh nach 240 sekunden, der dann die seite erneut laedt und auch das script erneut startet.


    gruesse

    pau

    Kommentar


    • #3
      @pauino
      das wollte ich auch gerade schreiben ...


      @DarkWanderer
      der meta-refresh ist die beste lösung. alles andere ist quatsch und belastet den server unnötig.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        wenn dein script länger laufen soll, mußt du set_time_limit(0) aufrufen.
        und mit dem browser offen lassen: probier mal ignore_user_abort()...
        eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

        Kommentar


        • #5
          Also das mit html refresh scheint mir auch logisch

          PHP-Code:
          <body>
             <
          META HTTP-EQUIV="Refresh" CONTENT="240;URL=scheduler.php">
          </
          body
          Die Zeile würde ja schon genügen um nach 240 Sekunden die scheduler.php aufzurufen.

          Aber was ist mit ignore_user_abort und set_time_limit(0) ?

          Muss ich das da oben auch noch einbauen ?

          Ah gefunden :
          Legt die Zeit in Sekunden fest, die ein Script laufen darf. Ist diese Zeit abgelaufen, wird ein Fehler zurückgegeben. Der Standard liegt bei 30 Sekunden

          Ok leuchtet also ein das ich da wohl set_time_limit(0) setzen msus da ich ja über den 30 Sekunden liege.
          - Carpe Noctem -

          Kommentar


          • #6
            Original geschrieben von DarkWanderer
            Ok leuchtet also ein das ich da wohl set_time_limit(0) setzen msus da ich ja über den 30 Sekunden liege.
            ja. aber wenn du den meta-refresh nimmst, braucht dein script ja wohl für einen durchlauf weniger als 30sec. deswegen kannst du dir das sparen.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              ...brauchst du nur, wenn du dat ohne refresh machen willst. bin mir aber nicht 100%ig sicher,
              ob das funzt (sollte aber). wir hatten das thema vor ein paar tagen...

              ich würde es so probieren:
              PHP-Code:
              set_time_limit(0);
              ignore_user_abort(1);
              $i=0;
              while(
              $i++<15)
                {
                 
              Schedule_start() ;
                 
              sleep(240) ;
                } 

              set_time_limit funzt nich im save-mode, glaub ich.
              und bei ignore_user_abort bin ich mir nicht so sicher, was passiert, wenn du den browser zu machst.
              eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

              Kommentar


              • #8
                Hmm verwirrt bin

                Also das mit dem Sleep(240) war ja auch meine erste Idee wie ganz oben zu sehen ist, das hat ja aber auf meinem Wege nicht geklappt.

                Nun weiss ich nicht, was den nun *gg*
                - Carpe Noctem -

                Kommentar


                • #9
                  also bei mir funzt dat (grad getestet: script lief 5 min, hab mir alle 20sec. was inne datei schreiben lassen).
                  geht auch, wenn du den browser zumachst.
                  eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                  Kommentar


                  • #10
                    PHP-Code:
                    set_time_limit(0) ; ignore_user_abort(1) ; $i=;
                    while(
                    $i++<15)
                    {
                       Echo 
                    "Durchlauf : $i;
                       
                    Schedule_start() ;
                       
                    sleep(120) ;

                    Geht bei mir definitiv nicht. Habs 10 Minuten laufen lassen aber die Ausgabe Durchlauf x kommt nicht einmal.

                    Das is ja mehr aufwand als ich dachte, warum geht das nicht ?

                    Update : Vielleicht sollte ich mal freundlich fragen ob mir jemand für 2 oder 3 Wochen nen Cronjob laufen lassen kann gegen bezahlung, wäre vielleicht das einfachste
                    Kenne nur leider keinen der die Möglichkeit dazu hat.
                    Zuletzt geändert von DarkWanderer; 18.02.2003, 11:01.
                    - Carpe Noctem -

                    Kommentar


                    • #11
                      die ausgabe kommt erst, wenn dat script fertig ist. also nach 15*120=1800sec=30min.
                      eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                      Kommentar


                      • #12
                        nimm mal das.... zwar nicht getestet, sollte aber gehen.

                        PHP-Code:
                        <?php

                          
                        if (!isset($dl)) $dl 0;
                          
                        $dl++;
                          echo 
                        "Durchlauf : ".$dl;

                          echo 
                        "<meta http-equiv=\"refresh\" content=\"240; URL=".$PHP_SELF."?dl=".$dl."\">";

                        ?>
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          PHP-Code:
                          set_time_limit(0) ; ignore_user_abort(1) ; $i=;
                          while(
                          $i++<150)
                            {
                            
                          $myFile=fopen("./test.txt","w") OR die("file-error");
                            
                          fwrite($myFile,$i.".: ".time(),150);
                            
                          fclose($myFile);
                             
                          sleep(20) ;
                            } 
                          ...schreibt mir alle 20 sec. die aktuelle Zeit in test.txt, und das schon seit 20 minuten (und der browser is schon lange zu...)
                          eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                          Kommentar


                          • #14
                            Hmm ja was soll ich jetzt sagen

                            Ich sollte doch gleich auf Abraxax hören den so klappt es völlig problemlos.

                            Ich denke damit komm ich dann aus zum testen

                            Vielen Dank mal wieder an dieser Stelle an alle fleissigen Helfer
                            - Carpe Noctem -

                            Kommentar


                            • #15
                              Original geschrieben von DarkWanderer
                              Ich sollte doch gleich auf Abraxax hören den so klappt es völlig problemlos.
                              so ist das eben (meistens zumindest)

                              vielen dank, dass sie sich für den kauf des demo-script bei mir entschieden haben.
                              die firma wünscht ihnen viel freude damit ...
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X