Da die Anforderungen an Echtzeit und eine hohe Parallelität von Internetdiensten weiter steigen, sind Warteschlangenverzögerungsaufgaben und Zeitaufgaben zu einem wichtigen Mittel zur Systemoptimierung geworden. In diesem Artikel wird vorgestellt, wie diese beiden Arten von Aufgaben in PHP und MySQL verwendet werden, und praktische Codebeispiele bereitstellt, damit Entwickler schnell loslegen können.
Verzögerungsaufgaben beziehen sich auf die Aufgabe von Aufgaben in Warteschlangen, Festlegen von Verzögerungszeiten und Warten auf die Zeit, die vor der Ausführung ausgeführt wird. Es wird häufig für die verzögerte Verarbeitung verwendet, z. B. zum Senden von SMS -Überprüfungscodes, zum Senden von E -Mails und zum Generieren von Berichten.
In PHP kann Redis als Warteschlangendienst verwendet werden, und das verzögerte Aufgabenmanagement kann in Kombination mit der Redis -Erweiterung von PHP implementiert werden.
Codebeispiel:
// verbindenRedisServer
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// Aufgaben in die Warteschlange geben,Stellen Sie die Verzögerungszeit auf60Zweite
$job = [
'to' => 'example@example.com',
'subject' => 'Test Email',
'content' => 'Hello, World!'
];
$delay = 60;
$redis->zAdd('delayed_queue', time() + $delay, json_encode($job));
// Rufen Sie Aufgaben mit Verzögerungszeit von der Warteschlange ab,Und ausführen
while (true) {
$jobs = $redis->zRangeByScore('delayed_queue', 0, time(), ['limit' => [0, 1]]);
if (!empty($jobs)) {
$job = array_shift($jobs);
// Aufgaben ausführen
sendEmail(json_decode($job, true));
// Löschen Sie ausgeführte Aufgaben aus der Warteschlange
$redis->zRem('delayed_queue', $job);
}
// Schlafen1Zweite后继续检查队列
sleep(1);
}
Der obige Code zeigt, wie sie Redis anschließen, Aufgaben in eine Verzögerungswarteschlange einfügen und Aufgaben überprüfen und ausführen, die durch Looping Zeit erreicht haben.
Die Timing -Aufgaben erledigen Operationen in vorgegebenen Zeitintervallen, z. B. einmal täglich oder einmal pro Stunde. Häufig für periodische Aufgaben wie Datensicherung und Protokollreinigung verwendet.
In PHP können Timing -Aufgaben über den Befehl crontab geplant werden.
Codebeispiel:
// Aufgaben mit fester Zeit ausführen
function doTask() {
echo "Fixed time task executed.";
}
// Regelmäßige Aufgaben ausführen
function doPeriodicTask() {
echo "Periodic task executed.";
}
// Geben Sie an, um jeden Morgen einmal auszuführen
$cron = '0 0 * * *';
exec("crontab -l > tmpcron");
file_put_contents("tmpcron", "$cron php -f /path/to/task.php >> /path/to/output.log 2>&1", FILE_APPEND);
exec("crontab tmpcron");
// Stündlich angeben5Einmal in Minuten ausführen
$cron = '5 * * * *';
exec("crontab -l > tmpcron");
file_put_contents("tmpcron", "$cron php -f /path/to/task.php >> /path/to/output.log 2>&1", FILE_APPEND);
exec("crontab tmpcron");
// Aufgaben ausführen
doTask();
doPeriodicTask();
Feste Zeitaufgaben und regelmäßige Aufgaben werden im Code definiert, und die Aufgaben werden über Crontab in die zeitgesteuerte Systemliste hinzugefügt, um eine automatische Ausführung sicherzustellen.
In PHP- und MySQL-Entwicklung können Warteschlangenverzögerungsaufgaben und Zeitaufgaben die Echtzeit- und Automatisierungsniveau des Systems effektiv verbessern. Verzögerungsaufgaben eignen sich für die Verarbeitungsvorgänge, die eine verzögerte Ausführung erfordern, während Zeitaufgaben für die regelmäßige Aufgabenplanung geeignet sind. Durch den Beispielcode in diesem Artikel können Entwickler diese Funktionen schnell implementieren und entsprechend den tatsächlichen Geschäftsanforderungen erweitern und optimieren.