Heim >Backend-Entwicklung >PHP-Tutorial >PHP kombiniert den Befehl cron von Linux, um Beispiele für geplante Aufgaben zu implementieren
Die Effizienz der PHP-Endlosschleife zur Bearbeitung geplanter Aufgaben ist sehr gering. Jeder empfiehlt, den in Linux integrierten Befehl „crontab“ für geplante Aufgaben zu verwenden, um ein PHP-Skript aufzurufen, um dies zu erreichen. Dieser Artikel zeigt Ihnen hauptsächlich ein Beispiel für die Implementierung geplanter Aufgaben mit PHP in Kombination mit dem Linux-Befehl cron. Ich hoffe, dass er Ihnen helfen kann.
Zwei Methoden für PHP-geplante Aufgaben:
1. Rufen Sie die PHP-Webseite über das Web auf, aber dies weist Sicherheitsprobleme auf und externe Benutzer können diese Datei auch aufrufen.
*/1 * * * * /usr/bin/wget -q -O temp.txt http://wan.coolxap.cn/cron
2. Der PHP-CLI-Modus zum Aufrufen von PHP-Skripten ist ein Befehlszeilenmodus zum Ausführen von PHP-Skripten
* * * * * /usr/bin/php -f /root/test.php >> test.log
Verwenden Sie crontab -e, um eine Aufgabe hinzuzufügen. Sie können eine Root-Datei unter /var/spool/cron sehen.
Starten Sie den Dienst neu, damit die Änderung wirksam wird
service crond restart
Die feinste Granularität von Crontab beträgt Minuten, Sie können jedoch mehrere Aufgaben starten + in den Ruhezustand versetzen Simulationsaufgaben in Sekundenschnelle erledigen.
* * * * * /bin/date >> /tmp/date.txt * * * * * sleep 10; /bin/date >> /tmp/date.txt * * * * * sleep 20; /bin/date >> /tmp/date.txt * * * * * sleep 30; /bin/date >> /tmp/date.txt * * * * * sleep 40; /bin/date >> /tmp/date.txt * * * * * sleep 50; /bin/date >> /tmp/date.txt列举个真实场景:
*/1 * * * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/closeinvalidlive 0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/magicdistributed 0 0 26 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildassessment 0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildprizestatement
Wenn die geplante Aufgabe nicht funktioniert
Die geplante Aufgabe führt das darin enthaltene PHP-Skript aus.
Es wurde festgestellt, dass es nicht direkt ausgeführt werden kann. Sie müssen zum WWW-Benutzer wechseln, um das PHP-Skript auszuführen.
Andernfalls werden die vom Skript ausgeführten Vorgänge mit Root-Berechtigungen ausgeführt und das Herunterladen von Bildern gehört zur Root-Benutzergruppe.
Das direkt verursachte Problem besteht darin, dass Webseitenbenutzer das Verzeichnis aufgrund unzureichender Berechtigungen nicht bedienen können. In dem von Root erstellten Verzeichnis können Webbenutzer beispielsweise keine Bilder in dieses Verzeichnis hochladen.
Die Lösung lautet wie folgt:
Wechseln Sie zum WWW-Benutzer, um den Befehl auszuführen
su www "-c cd /alidata/www/wwwroot/17xap/e/caidiscuz/ && /aliyun/webserver/php5.2.17/bin/php pushnews2.php -9 -u"
Lösen Sie auch das Bild. Ein kleiner Trick, den ich beim Herunterladen gefunden habe, um das Problem zu lösen.
Als ich die Schnittstelle zum Zugriff auf eine bestimmte PHP-Datei verwendete, stellte ich fest, dass das Herunterladen des Bildes fehlschlug, was darauf hinwies, dass die Berechtigungen nicht ausreichten und der Bildspeichervorgang nicht im Verzeichnis ausgeführt werden konnte.
Überprüfen Sie dann, ob die Berechtigungen des Verzeichnisses wr-wr-wr 0666 sind, was theoretisch das Lesen und Schreiben des Verzeichnisses unterstützt. Aber warum kann ich keine Bilder herunterladen?
Denn ohne x-Berechtigungen können Sie in diesem Verzeichnis keine Befehle ausführen, einschließlich mkdir, ls usw. Für das Erstellen von Bildern ist nicht nur die w-Berechtigung, sondern auch die x-Berechtigung erforderlich.
Nachdem die Berechtigung auf wrx-r-xr-x 0755 geändert wurde, kann das Bild normal heruntergeladen werden.
Der Trick zur Lösung des Problems besteht darin, zunächst ausreichende 0777-Berechtigungen zu erteilen. Wenn das Problem gelöst ist und festgestellt wird, dass das Skript aufgrund unzureichender Verzeichnisberechtigungen nicht normal ausgeführt werden kann, nehmen Sie dann die Berechtigungen des Verzeichnisses zurück und Erhöhen Sie die Berechtigungen schrittweise.
Das obige ist der detaillierte Inhalt vonPHP kombiniert den Befehl cron von Linux, um Beispiele für geplante Aufgaben zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!