wake-up-neo.net

Verwenden Sie PHP, um Cron-Jobs in Windows festzulegen

Ich bin auf der Suche nach einer Möglichkeit, Cron-Job mit PHP zu setzen. Ich möchte nur ein PHP -Skript zu einer bestimmten Zeit ausführen. Der Benutzer gibt zunächst eine Uhrzeit in ein Skript ein. Der Server führt das Skript entsprechend der angegebenen Uhrzeit aus. Ich verwende Windows 7 und Xampp.

Was ich gefunden habe ist: 

  1. Erstellen Sie eine PHP-Datei, die die Datei cron.php aufruft: Fügen Sie mit dem Editor (oder was auch immer) Folgendes in eine neue Datei ein: $ data = file ("http://pearl.supplychain.com/cron.php"); Sie müssen es in die regulären PHP-Tags mit dem Zeichen "weniger als" einfügen. PHP an der Front und der? "Größer als Zeichen" am Ende. (Ich kann das nicht einfach so eingeben, weil es "verdächtiger Inhalt" ist und Drupal dies nicht zulässt.) Speichern Sie es als executecron.php in demselben Verzeichnis wie cron.php (htdocs).

  2. Richten Sie eine geplante Aufgabe ein, die dies regelmäßig aufruft:

    1. Öffnen Sie Start - Alle Programme - Zubehör - Systemprogramme - Geplante Aufgaben.
    2. Doppelklicken Sie auf geplante Aufgaben.
    3. Richten Sie eine tägliche Aufgabe ein, die um 12:00 Uhr beginnt und jede halbe Stunde (oder was auch immer) bis 23:59 Uhr läuft. Sagen Sie der Aufgabe, dass sie Folgendes ausführen soll:

      C:\cms\xampp\php\php.exe c:\cms\xampp\htdocs\executecron.php
      

      (Auf diesem System ist php.exe in C:\cms\xampp\php installiert, aber Sie müssen wahrscheinlich den Pfad ändern.).

Wie Sie sehen können, muss man Open Start–All Programs–Accessories–System tools–Scheduled tasks.

Kann es durch PHP-Code oder eine andere Möglichkeit, dies zu tun? Weil ich will, dass die ganze Arbeit auf PHP/Server erledigt wird, anstatt dass mein Benutzer den Cron-Job selbst konfiguriert. Was bedeutet, dass ich meinen PHP-Code einstellen möchte, kann der cron in Server und Server den cron betrachten?

Zu Stefgosselin:

So erstellen Sie die Stapeldatei

Open Notepad.
Paste the line "C:\xampp\php\php.exe C:\wamp\www\index.php"
Click "File" -> "Save As"
Ensure "Save as type:" is set to "All Files"
Save the file as "cron.bat" to your C drive

So planen Sie die Ausführung der Stapeldatei

Open Command Prompt
Paste the following "schtasks /create /sc minute /mo 20 /tn "PHP Cron Job" /tr C:\cron.bat"
Press Enter
This will make the script run every 20 minutes, the first time 20 minutes from now.

Ich bin in der Lage, eine Baddatei mit PHP zu erstellen, aber gibt es eine Möglichkeit, Paste the following "schtasks /create /sc minute /mo 20 /tn "PHP Cron Job" /tr C:\cron.bat Mit PHP anstelle von os zu verwenden? Vielen Dank 

Vielen Dank 

11
Leo Chan

Ich habe meine Antwort auf diese Frage bei waytocode.com gefunden

Sie bieten 3 mögliche Lösungen für die Ausführung von cron-Jobs unter Windows:

Solution-1 mit Task Scheduler

In Ihrem Windows 7/Windows 2005/2008.

Gehen Sie zu Startmenü-> Alle Programme-> Zubehör-> Systemprogramme-> Taskplaner-> Task erstellen

Im neuen Fenster:

  1. Allgemein (Geben Sie den Namen der Aufgabe an und wählen Sie zum Testen "Ausführen, wenn der Benutzer angemeldet ist").

  2. Trigger (Sie können das laufende Intervall als "täglich, wöchentlich, monatlich" auswählen.)

  3. Aktion (Dies ist der wichtigste Teil. Wählen Sie ein Mozilla-Firefox als "Programm/Skript" aus und geben Sie im Argument die URL an, die mit Mozilla-Firefox ausgelöst werden soll.).

Solution-2 mit Task Scheduler und PHP von Ihrem XAMPP-Server

In Windows XP muss nichts kopiert oder installiert werden (bereits PHP ist auf dem Server wie XAMPP installiert).

Gehe zu Aufgabenplaner

Erstellen Sie eine Aufgabe, geben Sie "Laufzeit" an, und wählen Sie dann im Textfeld "RUN" eine erweiterte Einstellungsoption aus

C:\xampp\php\php.exe -f c:/xampp/htdocs/waytocode/mycron.php

In Windows 7/Server 2005/2008

Keine Notwendigkeit, etwas zu kopieren oder zu installieren (Bereits PHP ist auf dem Server installiert)

Erstellen Sie eine Aufgabe, und geben Sie die Option Laufzeit in der Trigger-Einstellung an. Dann in der Aktionseinstellungsoption im Textfeldtyp "Programm/Skript"

C:\xampp\php\php.exe

und im Typ "Argumente hinzufügen (optional)"

-f c:/xampp/htdocs/mycron.php

Solution – 3 Installieren Sie eine Windows-Exe-Datei, die den Cron-Job vom * nix-System simuliert

Ich möchte keine Exe-Datei auf meinen Servern oder auf meinem Entwicklungscomputer installieren. Aber ich werde die Lösung so bereitstellen, wie sie veröffentlicht wurde:

Kopieren Sie in Windows XP alle 2 DLL Dateien mit der Datei wget.exe in den Ordner C:\windows

Erstellen Sie eine Aufgabe, geben Sie dann Laufzeit in einer erweiterten Einstellungsoption im Textfeldtyp "RUN" an

C:\Windows\wget.exe -q -O NUL http://localhost/mycron.php

Kopieren Sie in Windows 7/Server 2005/2008 alle 2 DLL Dateien mit wget.exe in den Ordner C:\windows

Erstellen Sie eine Aufgabe, geben Sie dann in einer erweiterten Einstellungsoption im Textfeldtyp "Programm/Skript" die Option "Laufzeit" an

C:\Windows\wget.exe

und im Typ "Argumente hinzufügen (optional)"

-q -O NUL http://localhost/mycron.php

Solution-4 mit einer .bat-Datei und dem Taskplaner

Ich habe es hier bei Stackoverflow gefunden und ähnelt der ersten 2:

  1. Erstellen Sie eine cron.php-Datei (den Code, den Sie regelmäßig ausführen möchten)

  2. Erstellen Sie eine CRON.BAT-Datei, kopieren Sie und fügen Sie den folgenden Code in der Datei ein

    D:\xampp\php\php.exe D:\xampp\htdocs\Application\cron.php

Der Pfad, den ich geschrieben habe, entspricht meiner Datei xampp und cron.php. Aktualisieren Sie den Pfad der Dateien entsprechend Ihrem Systemverzeichnis

  1. So planen Sie eine Aufgabe: __Klicken Sie auf Start> Alle Programme> Zubehör> Systemprogramme> Geplante Aufgaben

Oder Sie können direkt auf Systemsteuerung> Geplante Aufgaben gehen

Klicken Sie mit der rechten Maustaste in den OrdnerNeu> Task planen

Geben Sie der Task einen geeigneten Namen. Im Textfeld RUN… Geben Sie den vollständigen Pfad der CRON.BAT-Datei ein. In meinem Fall ist dies der Fall 

D:\xampp\htdocs\Application\CRON.BAT

Legen Sie den Zeitplan für den Job fest. Sie können bei Bedarf die erweiterte Schaltfläche verwenden.

Lösung-5

Ich mag es auch nicht, weil ein Skript sich nicht auf eine andere Website verlassen kann, aber es ist trotzdem eine Lösung.

Verwenden Sie einen externen Online-Cron-Jobservice. 

https://www.google.ca/search?q=cron+job+online+service

Wählen Sie eine Lösung, die für Sie besser geeignet ist. Hoffe das hilft jemandem.

UPDATE

Solution-6 (Basierend auf den Antworten unten und funktioniert auch mit CodeIgniter!)

Erstellen Sie die Datei cron.bat, schreiben Sie den folgenden Befehl und speichern Sie ihn.

@ECHO OFF
c:
cd C:\Program Files\Internet Explorer
START iexplore.exe http://localhost/path/to/cron/job/1

Erstellen Sie eine Aufgabe, und geben Sie die Option Laufzeit in der Trigger-Einstellung an. Dann in der Aktionseinstellungsoption im Textfeldtyp "Programm/Skript"

C:\xampp\path\htdocs\folder\includes\cron.bat

END UPDATE

Beantwortung Ihrer Frage:

Kann es durch PHP-Code oder eine andere Möglichkeit, dies zu tun? Weil ich Ich möchte, dass die gesamte Arbeit auf PHP/Server erledigt wird, anstatt meinen Benutzer config der Cronjob selbst. Was bedeutet, dass ich meinen PHP-Code einstellen kann Cron in Server und Server wird der Cron aussehen?

Es gibt andere Möglichkeiten, dies zu tun:

Verwendung von cron manager aus PHP heraus Verwendung von cron manager aus PHP

Verwalten von Cron-Jobs mit PHP http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php-2--net-19428

Leider benötigen alle Lösungen mit PHP einen * nix-Servertyp und/oder ein cPanel und sind mehr oder weniger kompliziert zu implementieren.

36
Adrian P.

Ok, wenn ich es richtig verstanden habe, möchten Sie einen Cron-Job auf einem System erstellen, ohne dass ein Benutzer die Aufgabe erstellen muss.

Im Grunde kann dies leicht in einer .bat-Datei erfolgen (die sogar von PHP aus aufgerufen werden kann) .. Die Schtasks-App kann die Erstellung einer geplanten Aufgabe problemlos automatisieren. Zum Beispiel:

schtasks /create /tn UNO /tr YOURAPP.EXE /sc HOURLY /mo 2

Auf der offiziellen MS-Supportseite finden Sie weitere Informationen zu dieser schicken Anwendung.

Eine andere Option, die für den Benutzer noch einfacher sein kann, ist die Verwendung eines Installationsprogramms. Ich habe nicht so viele Windows-Apps selbst erstellt, hatte aber das Vergnügen, mit NSIS zu spielen, und diese App bietet auch Optionen zum Erstellen geplanter Aufgaben, unter vielen anderen Funktionen, die hier zu nennen sind. Sehr empfehlenswert, wenn Sie ein vom Benutzer installierbares Paket benötigen.

Hoffe das hilft, glücklicher Programmierfreund.

2
stefgosselin

Ein weiteres großartiges Tool steht kostenlos unter Windows zur Verfügung. Es verwendet genau dieselbe Syntax wie Unix 'cron:

http://www.nncron.ru/

Ich finde es einfacher, dass diese schrecklichen Aufgaben erledigt werden :)

Die Lite-Version ist die, die ich vorschlagen möchte. Die Vollversion unterstützt das Scripting in den Konfigurationsdateien. Es könnte praktisch sein, aber irgendwie für normale Cron-Jobs übergangen.

2
Pierre

Schritte zum Erstellen von Cron in Windows:

Schritt 1> .bat-Datei erstellen 

    1. open notepad.
    2. click File -> Save As.
    3.Give the file a name i.e. MyBatchFile.bat Underneath the filename box change the file type to All Files. The .bat on the end of the filename will instruct the PC to open it as a batch file.

Schritt 2> IN MyBatchFile.bat folgenden Befehl schreiben

    ECHO OFF
    START File Full Path write here like http://www.google.com

Schritt 3> Öffnen Sie Start - Alle Programme - Zubehör - Systemprogramme - Geplante Tasks . Klicken Sie in der rechten Seitenleiste auf Aufgabe erstellen . Name: beliebig Auslöser: Zeit aus Dropdown einstellen und pro Tag auswählen Aktion: Wählen Sie die .bat-Datei .__ aus. Klicken Sie auf OK

0
user2293605

Ein anderer recht einfacher Ansatz ist Powershell, um den Inhalt Ihrer PHP-Datei abzurufen. 

Task-Scheduler, Ziel: Powershell.exe, Argumente verwenden: 

-Command "(New-Object Net.WebClient).DownloadString('http://myhost/cron/cron.php')"

(Ups, alte Post)

0
dognose