Position actuelle: Accueil> Derniers articles> Guide d'application pratique pour la file d'attente tâches retardées et tâches de synchronisation dans PHP et MySQL

Guide d'application pratique pour la file d'attente tâches retardées et tâches de synchronisation dans PHP et MySQL

M66 2025-10-05

introduction

Alors que les exigences en matière de concurrence en temps réel et élevée des services Internet continuent d'augmenter, les tâches de retard de file d'attente et les tâches de synchronisation sont devenues des moyens importants d'optimisation du système. Cet article présentera comment utiliser ces deux types de tâches dans PHP et MySQL, et fournira des exemples de code pratiques pour aider les développeurs à démarrer rapidement.

Scénarios d'application des tâches de retard de file d'attente

Les tâches de retard se réfèrent à la mise en file d'attente dans les files d'attente, à la définition du temps de retard et à l'attente de l'exécution avant l'exécution. Il est souvent utilisé pour un traitement retardé, comme l'envoi de codes de vérification SMS, l'envoi de courriels, la génération de rapports.

Dans PHP, Redis peut être utilisé comme service de file d'attente et la gestion des tâches retardée peut être mise en œuvre en combinaison avec l'extension redis de PHP.

Exemple de code:

 // connecterRedisserveur
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// Mettez les tâches dans la file d'attente,Réglez le temps de retard sur60Deuxième
$job = [
    'to' => 'example@example.com',
    'subject' => 'Test Email',
    'content' => 'Hello, World!'
];
$delay = 60;
$redis->zAdd('delayed_queue', time() + $delay, json_encode($job));

// Récupérer les tâches avec le temps de retard de la file d'attente,Et exécuter
while (true) {
    $jobs = $redis->zRangeByScore('delayed_queue', 0, time(), ['limit' => [0, 1]]);
    if (!empty($jobs)) {
        $job = array_shift($jobs);
        // Effectuer des tâches
        sendEmail(json_decode($job, true));
        // Supprimer les tâches exécutées de la file d'attente
        $redis->zRem('delayed_queue', $job);
    }
    // Dormir1Deuxième后继续检查队列
    sleep(1);
}

Le code ci-dessus montre comment connecter Redis, mettre des tâches dans une file d'attente de retard et vérifier et exécuter des tâches qui ont atteint le temps par boucle.

Scénarios d'application pour les tâches de synchronisation

Les tâches de synchronisation effectuent des opérations à des intervalles de temps prédéterminés, comme une fois par jour ou une fois par heure. Couramment utilisé pour des tâches périodiques telles que la sauvegarde des données et le nettoyage des journaux.

En PHP, les tâches de synchronisation peuvent être planifiées via la commande Crontab.

Exemple de code:

 // Effectuer des tâches à temps fixe
function doTask() {
    echo "Fixed time task executed.";
}

// Effectuer des tâches périodiques
function doPeriodicTask() {
    echo "Periodic task executed.";
}

// Spécifiez pour exécuter une fois tous les matins
$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");

// Spécifiez l'heure5Exécuter une fois en minutes
$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");

// Effectuer des tâches
doTask();
doPeriodicTask();

Les tâches de temps fixe et les tâches périodiques sont définies dans le code, et des tâches sont ajoutées à la liste des tâches chronométrées du système via Crontab pour assurer l'exécution automatique.

Résumer

Dans le développement de PHP et MySQL, les tâches de retard de file d'attente et les tâches de synchronisation peuvent améliorer efficacement le niveau réel et l'automatisation du système. Les tâches de retard conviennent aux opérations de traitement qui nécessitent une exécution retardée, tandis que les tâches de synchronisation conviennent à la planification des tâches périodique. Grâce à l'exemple de code de cet article, les développeurs peuvent rapidement implémenter ces fonctions et se développer et optimiser en fonction des besoins réels de l'entreprise.