Home  >  Article  >  Backend Development  >  PHP scheduled task: automatically cancel order operation every 10 minutes

PHP scheduled task: automatically cancel order operation every 10 minutes

WBOY
WBOYOriginal
2024-03-02 08:03:03371browse

PHP scheduled task: automatically cancel order operation every 10 minutes

Title: PHP scheduled task: automatic cancellation of orders every 10 minutes, specific code examples are required

In e-commerce platform operations, automatic cancellation of orders is a common needs, especially for orders that have not been paid for a long time or under other specific circumstances. In order to improve efficiency and reduce labor costs, we can use PHP scheduled tasks to automatically cancel orders every 10 minutes. The following will describe how to use PHP code to achieve this function.

First of all, we need to use CRON (timed task scheduler) to set a task to be executed every 10 minutes on the server. For specific methods, please refer to the operating system documentation of the server. Here we take the Linux system as an example. Open the terminal and enter the following command to edit the CRON task:

crontab -e

Then add the following line:

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

The above command means that it will be executed every 10 minutes in the script.php file PHP script. Next, let's write a PHP script to implement the function of automatically canceling orders.

<?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();
?>

In the above PHP script, we first connect to the database, and then query the orders that have not been paid and were created more than 10 minutes ago. Next, we update the status of these orders to canceled and output the corresponding information. Finally close the database connection.

Through the above code example, we can automatically cancel orders every 10 minutes. Remember to make corresponding adjustments according to specific needs and database structure in actual projects. I hope the above content is helpful to you, and I wish you success in completing the automatic order cancellation function.

The above is the detailed content of PHP scheduled task: automatically cancel order operation every 10 minutes. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn