Implementierungsannahmen zur PHP-Cron-Task-Verwaltung

巴扎黑
Freigeben: 2016-11-10 09:47:44
Original
1146 Leute haben es durchsucht

Früher musste ich jedes Mal, wenn ich eine Funktion für geplante Aufgaben entwickelte, crontab online bedienen, um Elemente hinzuzufügen, daher möchte ich PHP verwenden, um die Aufgabenelemente in einem einzelnen Projekt einheitlich zu verwalten kann eine Tabelle [ID, Name, Status, Funktion, Timer, letzte_Zeit, erstellt_at] erstellen, um die geplanten Aufgabenskripte im Projekt einheitlich zu speichern. Durch einfache Konfiguration

kann jede geplante Aufgabe in eine einfache Aufgabe abstrahiert werden Klasse, und dann über einen einzigen in crontab konfigurierten Eintrag. Der einheitliche Zugriff darauf reduziert den Aufwand, der durch Online-Code-Änderungen in der

Online-Serverumgebung entsteht.

Dann gibt es einige Fallstricke Da Aufgaben nach Funktion organisiert sind, kann es mehrere Arten von Eigenschaftsklassifizierungen geben, z. B.:

1 Einzelne Ausführung, endet sofort, mehrere Instanzen können gleichzeitig ausgeführt werden

2. Daemon-Prozess, derselbe Es kann jeweils nur eine Instanz ausgeführt werden

Für die zweite Art von Sperrmechanismus ist es auch notwendig, das Programm daran zu hindern aufgrund von Fehlern, Ausnahmen usw. entsperrt werden, was dazu führt, dass eine solche Aufgabe nicht erneut gestartet werden kann

Bei dieser Art von Aufgabe müssen Sie auch überlegen, wie Sie die Aufgabe schnell und einfach beenden können, wenn sich andere Anforderungen ändern während des Betriebs

Ich vermute, dass der Sperrmechanismus jedes Mal über die Aufgaben-ID implementiert wird. Wenn Sie eine Aufgabe ausführen, müssen Sie eine Sperre beantragen. Jede beantragte Sperre hat ein festes Nutzungskontingent . Diese Art von Aufgabe

muss nach Abschluss jedes Stapels einmalig eine Sperre beantragen

lock_id: $task_id

lock_{$task_id}_quota: $quota

jedes Mal Um eine Sperre erneut zu beantragen, müssen Sie um die Konfigurationsinformationen der Aufgabe in der Aufgabenkonfigurationstabelle erneut zu lesen

Wenn die Anwendung fehlschlägt (-1), schließen Sie diese Ausführung und warten Sie auf die nächste Ausführung. Auf diese Weise, wann Sie möchten Um diese Art von Aufgabe abzubrechen, haben Sie zwei Möglichkeiten:

1. Um dieses Mal abzubrechen, setzen Sie einfach das Nutzungskontingent auf -1

2. Diese Aufgabe vollständig verbieten und zurücksetzen Status ist deaktiviert und setzt dann sein Nutzungskontingent auf -1 zurück

Nach Abschluss der Aufgabe muss die Sperre aufgehoben werden. Wenn die Sperrfreigabe fehlschlägt, ist ein Mechanismus zur Erkennung ungültiger Sperren erforderlich um die Freigabe zu erzwingen

Bestimmung ungültiger Sperren:

Der Schlüssel liegt darin, wie festgestellt werden kann, ob die Task-Instanz aktiv ist und ob das Sperrkontingent beendet wurde? Auswirkungen nach dem Töten?

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!