Maison  >  Article  >  développement back-end  >  Tâche planifiée PHP : annuler automatiquement l'opération de commande toutes les 10 minutes

Tâche planifiée PHP : annuler automatiquement l'opération de commande toutes les 10 minutes

WBOY
WBOYoriginal
2024-03-02 08:03:03407parcourir

Tâche planifiée PHP : annuler automatiquement lopération de commande toutes les 10 minutes

Titre : Tâche planifiée PHP : annulation automatique des commandes toutes les 10 minutes, des exemples de code spécifiques sont requis

Dans les opérations des plateformes de commerce électronique, l'annulation automatique des commandes est un besoin courant, notamment en cas de non-paiement à long terme ou d'autres commandes dans des circonstances spécifiques. Afin d'améliorer l'efficacité et de réduire les coûts de main-d'œuvre, nous pouvons utiliser des tâches planifiées PHP pour annuler automatiquement les commandes toutes les 10 minutes. Ce qui suit décrira comment utiliser le code PHP pour réaliser cette fonction.

Tout d'abord, nous devons utiliser CRON (Cronned Task Scheduler) pour définir une tâche à exécuter toutes les 10 minutes sur le serveur. Pour des méthodes spécifiques, veuillez vous référer à la documentation du système d'exploitation du serveur. Ici, nous prenons le système Linux comme exemple. Ouvrez le terminal et entrez la commande suivante pour éditer la tâche CRON :

crontab -e

Ajoutez ensuite la ligne suivante :

*/10 * * * * php /path/to/your/php/script.php

La commande ci-dessus signifie exécuter le script PHP dans le fichier script.php toutes les 10 minutes. Ensuite, écrivons un script PHP pour implémenter la fonction d'annulation automatique des commandes.

<?php
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查数据库连接
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}

// 查询未支付且创建时间超过10分钟的订单
$current_time = time();
$sql = "SELECT * FROM orders WHERE status = 'unpaid' AND (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(created_at)) >= 600";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 更新订单状态为取消
    while ($row = $result->fetch_assoc()) {
        $order_id = $row["id"];
        $update_sql = "UPDATE orders SET status = 'cancelled' WHERE id = $order_id";
        if ($conn->query($update_sql) === TRUE) {
            echo "订单 $order_id 已取消
";
        } else {
            echo "取消订单 $order_id 失败: " . $conn->error;
        }
    }
} else {
    echo "无需取消订单
";
}

// 关闭数据库连接
$conn->close();
?>

Dans le script PHP ci-dessus, nous nous connectons d'abord à la base de données, puis recherchons les commandes qui n'ont pas été payées et qui ont été créées il y a plus de 10 minutes. Ensuite, nous mettons à jour le statut de ces commandes pour les annuler et affichons les informations correspondantes. Fermez enfin la connexion à la base de données.

Avec l'exemple de code ci-dessus, nous pouvons annuler automatiquement les commandes toutes les 10 minutes. N'oubliez pas de procéder aux ajustements correspondants en fonction des besoins spécifiques et de la structure de la base de données dans les projets réels. J'espère que le contenu ci-dessus vous sera utile et je vous souhaite de réussir à remplir la fonction d'annulation automatique de commande.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn