Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Script/Datei alle X Sekunden ausführen

Einklappen

Neue Werbung 2019

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

  • PHP Script/Datei alle X Sekunden ausführen

    Hallo zusammen,

    ich habe ein kleines "Problem" - nach meiner Recherche im Internet, ist dieses aber lösbar. Die Frage ist nur WIE es am einfachsten/besten gelöst wird.

    Ich Arbeite gerade an einer PHP Seite die mit einer MYSQL - Datenbank zusammenarbeitet. Ich benötige eine gude Idee, wie ich die Datenbank dazu bekomme, alle X sekunden, berechnungen durchzuführen.

    Mit X sekunde meine ich zwischen 1 - 5 sekunden. Das ganze sollte auch funktionieren wenn kein User online ist. Meine Idee ist ein PHP - Script, dass alle benötigten "Befehle" für die Datenbank berechnungen enthält. Nur wie bekomme ich dieses, am besten Serverseitig und automatisch, ausgeführt?

    Falls hier im Forum schon Themen dazu gibt, dann möchte ich mich entschuldigen. Habe aber leider nichts passendes gefunden.

    Würde mich freuen wenn mir jemand helfen kann

    Viele Grüße
    Tobias

  • #2
    Wiederkehrende Aufgaben können in allen Betriebssystemen angelegt werden. Dort einfach alle x Sekunden dein Script aufrufen und gut. Konkrete Hinweise kann man erst geben, wenn das OS bekannt ist.

    Kommentar


    • #3
      Genau hier komme ich nicht weiter. Leider kenne ich mich im bereich "Server" weniger gut aus, als ich es gerne hätte.

      Ich hatte ursprünglich an einen CronJob gedacht, allerdings kann ich diesen "nur" mit einer Frequenz von 1 min nutzen.

      Daher meine Frage: Welche Möglichkeiten gibt es - und wie setzte ich diese am einfachsten um.

      Kommentar


      • #4
        PHP-Code:
        <?php
        set_time_limit
        (0);
        require 
        'db_connect.php';

        while (
        true) {
          
        $ergebnis machwas();
          if ( 
        $ergebnis == 'schluss_fuer_heute' ) {
            break;
          }
          
        sleep (5);
        }

        endverarbeitung();
        [PHP]if ($var != 0) {
        $var = 0;
        }[/PHP]

        Kommentar


        • #5
          Zitat von Wolla Beitrag anzeigen
          PHP-Code:
          <?php
          set_time_limit
          (0);
          require 
          'db_connect.php';

          while (
          true) {
            
          $ergebnis machwas();
            if ( 
          $ergebnis == 'schluss_fuer_heute' ) {
              break;
            }
            
          sleep (5);
          }

          endverarbeitung();
          Vielen Dank! An so etwas ähnliches hatte ich auch gedacht, allerdings meine ich mich zu erinnern, dass solche schleifen vom Server nach 90 sek. Automatisch beendet werden?! Oder bin ich da falsch informiert?

          Kommentar


          • #6
            Bist du.
            Ich hab so was mal probeweise (mit längerem Sleep) einen Monat lang aktiv gehalten und dann immer einen Zeitstempel in eine tabelle geschrieben.
            Kein Problem.

            Ich schieb das mal zu PHP-Einsteiger, dies hier ist kein Fortgeschrittenenthema.
            [PHP]if ($var != 0) {
            $var = 0;
            }[/PHP]

            Kommentar


            • #7
              Oder bin ich da falsch informiert?
              Siehe: http://php.net/manual/de/function.set-time-limit.php


              Ich glaub eher das Problem ist wenn dir dieses "ewige" Script aus irgend einen Grund mal krepiert wirst Du es *wann? / wie schnell?* merken...

              Könntest dann einmal je Minute einen CronJob laufen lassen der ein anderes Script startet, das prüft ob das "ewige" noch läuft

              LG
              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                ..oder gleich jede Minute einen CronJob mit einer Schleife wie oben die nach 12 Zyklen endet.

                Kommentar


                • #9
                  Zitat von Tobias24 Beitrag anzeigen
                  Ich benötige eine gude Idee, wie ich die Datenbank dazu bekomme, alle X sekunden, berechnungen durchzuführen.

                  Mit X sekunde meine ich zwischen 1 - 5 sekunden. Das ganze sollte auch funktionieren wenn kein User online ist.
                  In 95,72% aller Fälle deutet das auf einen Bock im Konzept hin. Eine Berechnung, die <=1 Sekunde dauert muss im Regelfall nicht zyklisch und ohne Userinteraktion erfolgen.

                  Darf man fragen, um was für eine Berechnung es sich handelt?

                  Gruß Jens

                  Kommentar


                  • #10
                    Zitat von Jens Clasen Beitrag anzeigen
                    Darf man fragen, um was für eine Berechnung es sich handelt?
                    Es riecht etwas nach einem Browsergame, Chat oder anderen Fummel , bei dem der Server mit sinnlosen Berechnungen gestreßt werden soll.

                    Kommentar


                    • #11
                      Stimmt, genau das tut es. Das wollte ich nur nicht so undiplomatisch formulieren

                      Gruß Jens

                      Kommentar


                      • #12
                        Zitat von Jens Clasen Beitrag anzeigen
                        Das wollte ich nur nicht so undiplomatisch formulieren
                        Tja, meikel is nicht nur alt wie die Steinkohle sondern auch noch ein garstiger Rentner, der sich nicht mehr bewerben muß.

                        Kommentar


                        • #13
                          Zitat von meikel Beitrag anzeigen
                          Es riecht etwas nach einem Browsergame, Chat oder anderen Fummel , bei dem der Server mit sinnlosen Berechnungen gestreßt werden soll.
                          Gut gerochen Bevor jetzt alle kommen und mir erzählen das es fast ein ding der unmöglichkeit sei das Spiel zu Programmieren und ich viel Zeit investieren muss usw... - Das ist mir schon klar -

                          Was meinst du mit "sinnlosen" Berechnungen? Geht das auch eleganter?

                          Gruß
                          Tobias

                          Kommentar


                          • #14
                            Zitat von Tobias24 Beitrag anzeigen
                            Was meinst du mit "sinnlosen" Berechnungen? Geht das auch eleganter?
                            Ja. Berechne nur das, was benötigt wird, um einen User-Request zu bedienen.

                            Beispiel: Materialgewinnung
                            wenn der Steinbruch in 60 sec. 60 Steine fördert, mußte nicht jeden einzelnen Stein addieren.

                            letzter Request:
                            0:00:00

                            aktueller Request:
                            0:25:00

                            25 * 60 = 1500 Steine

                            Die Berechnungen kannste entweder in der Session oder via SQL in einer Datenbanktabelle erledigen.

                            Falls Du zum Aufhübschen die Items fortlaufend aktuelisieren möchtest: das erledigt man mit Javascript/Java/Flash. Natürlich mußt Du die JS Counter immer mal mit dem Server synchronisieren.

                            Kommentar


                            • #15
                              Das bedeutet ich soll das ganze "on request" anlegen..?

                              Daran hatte ich auch gedacht..allerdings müsste dann auch dieser request durch dritte ausgelöst werden oder? Z.b. bei einem Angriff.. ?

                              Kommentar

                              Lädt...
                              X