Cronjobs unter Windows

  • PHP

  • wurstfabrik
  • 1318 Aufrufe 11 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Cronjobs unter Windows

    Hi Leute,
    ich freu mich, mich neuerdings als FSB-Mitglied sehen zu können und komme auch schon mit meiner ersten Frage daher:

    Ich habe hier zuhause einen Webserver laufen, der automatisiert zu einer oder mehreren bestimmten Uhrzeiten bestimmte Funktionen ausführen soll - ich hab gehört, dass sowas ja mit Cronjobs geht, aber die werden ja nur im Internet angeboten, wo sie zum einen, wenn sie kostenlos sein sollen, auch nur einmal täglich möglich sind, zum anderen sollen sie auch im LAN ohne INet funktionieren.

    Hat irgendjemand vielleicht eine Möglichkeit, wie ich das Ganze anstellen könnte ?

    Auf Hilfe hoffend
    wurst
  • hmmm ... also, wenn sonst niemand will, versuch's ich halt mal!? ^^

    verstehe ich dich richtig, dass du cronjobs fuer deinen webserver @ home einrichten willst!? wenn ja und dein server win ist, dann verwende doch einfach den im win vorhandenen taskplaner!
    damit koenntest du z.b. php.exe starten die ein skript ausfuehrt, z.b. datenbank/temp dateien aufraeumen, etc...

    gute idee!?

    ceeyaa.MeX
  • Da ich weiß worum es geht, antworte ich mal kurz, da ich es gerade gelesen habe :)
    Das mit dem TaskPlaner ist ne gute Idee und nen Programm in delphi ist auch gut, das problem ist nur das man über ein php interface die cronjobs ein- und ausschalten kann, und wie will man das dann realisieren ?
    Ob es ein- oder ausgeschaltet ist steht in einer SQL Datenbank !

    Außerdem muss es für Linux & Windows ne Möglichkeit geben, da das System Plattformunabhängig läuft.

    Irgendwer Ideen ?

    Greets
    $Newbie$
  • das ausfuehrende program ist php.exe und somit plattformunabhaengig!
    es geht nur um dir methode, wie du das skript zu einem bestimmten zeitpunkt laufen lassen kannst!
    dafuer verwende ich unter windows eben den taskplaner!
    man koennte in dem php skript auch unendlich loopen und die funktion sleep() verwenden um einen intervall zu haben! das ist geschmackssache!! ob das skript durchlaufen soll, kann in ner db stehen oder eben eine andere condition sein!! z.b.: sind temporaere dateien in einem ordner, wenn ja, dann soll das skript diese loeschen!

    eigentlich wollte ich mit meinem ersten post nur sagen, dass man mit php.exe dateiname.php auch php dateien ausfuehren kann, ohne dass diese ueber einen browser aufgerufen werden muessen! was in dieser php datei gecodet ist, bleibt euch ueberlassen!!

    ceeyaa.MeX
  • sind .exe dateien plattform unabhängig ?? Dachte es wäre schwer ne .exe unter Linux auszuführen ,aber wenn das so ist :) Danke :)

    Sollte keine Kritik sein ! War nur meine Unkenntnis !!
    Sorry !

    cu
    $Newbie$
  • also, das wuerde hier jetzt zu weit vom eigentlichen thema des threads abweichen, hier eine linux-schulung zu machen!
    die executable von php heisst sowohl unter linux als auch unter windows php.exe!
    unter win zeigt das *.exe, unter linux das recht 'executable', dass es sich um eine ausfuehrbare datei handelt!
    php.exe dateiname.php fuehrt das skript dateiname.php ohne einen browser aus!
    ob der cronjob oder taskplaner nun ein php oder sonstirgendeine *.exe oder executable ausfuehrt ist sche*ssegal!^^
    es war fuer diesen thread nur ein example!

    falls jemand weitere fragen zum thema linux oder 'wie kann ich was unter welchem OS wie ausfuehren' hat, neuen thread eroeffnen!
    hier nur mehr posts zum thema! THX!!

    ceeyaa.MeX
  • Danke erstmal euch beiden !
    Um mal die Idee von MeX aufzugreifen, in der php datei nen loop zu machen und sleep() zu verwenden, das hört sich nämlich meiner Meinung ganz gut an, weil ich den Taskplaner nicht mag, man könnte das ja dann in die Registry zum Autostart schreiben oder so - lastet das den Prozessor nicht unnötig aus ? oder macht PHP während dem sleep() wirklich gar nix ?!

    MfG wurst
  • php macht waehrend des sleeps nichts! keine last fuer den server!
    wenn du nen loop machst und das skript aus irgendeinem grund nen error hat und crashed wird kein skript mehr ausgefuehrt! wenn du das ueber den taskplaner machst, kann ein script eher mal crashen, beim naechsten mal koennte das skript wieder durchlaufen!
    hat alles seine vor und nachteile!! ^^

    ceeyaa.MeX
  • Wunderbar, das Thema wird mir immer klarer ;)
    Aber ein Problem (ist es eins?) ist mir noch aufgefallen, wenn man das mit nem loop macht: die maximale Ausführzeit für scripts seitens PHP ... Muss ich die dann unendlich hoch setzen ? weil ansonsten bricht PHP das script doch nach 20min (is glaube ich standard) ab, oder ?
    MfG wurst
  • das gefaellt mir ... da denkt jemand mit!! ^^
    max_execution_time = 30 das ist der standard eintrag in der php.ini!
    verwende set_time_limit(0) um den script counter zurueck zu setzen!
    teste das mal:

    PHP-Quellcode

    1. <HTML>
    2. <HEAD>
    3. <title>test :: max_execution_time</title>
    4. </HEAD>
    5. <BODY>
    6. <?php
    7. // uncomment to test your execution time
    8. // set_time_limit(0);
    9. if (ob_get_level() == 0) {
    10. ob_start();
    11. } // END if
    12. echo '<h3>sript running in seconds:</h3>';
    13. for ($i = 1; $i < 60; $i++) {
    14. sleep(1);
    15. echo $i.'<br />';
    16. ob_flush();
    17. flush();
    18. }
    19. ob_end_flush();
    20. ?>
    21. </BODY>
    22. </HTML>
    Alles anzeigen

    lass' dich ned verwirren! wichtig ist das set_time_limit(0);!! vergiss' den rest des codes ... fuer den anfang zumindest!! ^^
    fuehre das skript mal so aus wie es jetzt ist und dann nochmal mit dem set_time_limit(0)!!

    ceeyaa.MeX
  • Also ich weiss nich, ob es das war was du meintest was ich tun soll, aber ich hab jetzt diesen Quelltext da genommen und hab ihn ausgeführt, einmal mit Kommentar und einmal ohne - also zumindest bei diesem Script war keine Veränderung zu sehen, jedes Mal werden untereinander die Sekunden angegeben, die das Script schon läuft (was ja auch aus dem Quelltext zu ersehen ist) - oder soll ich den set_time_limit(0) in mein Script einfügen, was ich hier zum laufen kriegen will ?

    MfG, danke für deine Bemühungen
    wurst


    Änderung: Habe nochmal drüber nachgedacht und hab in der php.ini die max_execution_time auf 15 sec gesetzt, das Script nochmal getestet uns siehe da: es funktioniert tatsächlich !!
    Danke sehr, MeX, hat mir sehr geholfen !!
    Wünsche noch nen schönen weiteren Sonntag, nochmal Danke !!

    MfG wurst