Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tugas berjadual PHP: membatalkan operasi pesanan secara automatik setiap 10 minit

Tugas berjadual PHP: membatalkan operasi pesanan secara automatik setiap 10 minit

WBOY
WBOYasal
2024-03-02 08:03:03372semak imbas

Tugas berjadual PHP: membatalkan operasi pesanan secara automatik setiap 10 minit

Tajuk: Tugas berjadual PHP: pembatalan automatik pesanan setiap 10 minit, contoh kod khusus diperlukan

Dalam operasi platform e-dagang, pembatalan automatik pesanan adalah keperluan biasa, terutamanya untuk ketidakbayar jangka panjang atau Pesanan lain dalam keadaan tertentu. Untuk meningkatkan kecekapan dan mengurangkan kos buruh, kami boleh menggunakan tugas berjadual PHP untuk membatalkan pesanan secara automatik setiap 10 minit. Berikut akan menerangkan cara menggunakan kod PHP untuk mencapai fungsi ini.

Pertama, kita perlu menggunakan CRON (Cronned Task Scheduler) untuk menetapkan tugasan yang akan dilaksanakan setiap 10 minit pada pelayan. Untuk kaedah tertentu, sila rujuk dokumentasi sistem pengendalian pelayan Di sini kami mengambil sistem Linux sebagai contoh. Buka terminal dan masukkan arahan berikut untuk mengedit tugas CRON:

crontab -e

Kemudian tambah baris berikut:

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

Arahan di atas bermaksud untuk melaksanakan skrip PHP dalam fail script.php setiap 10 minit. Seterusnya, mari kita tulis skrip PHP untuk melaksanakan fungsi membatalkan pesanan secara automatik.

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

Dalam skrip PHP di atas, kami mula-mula menyambung ke pangkalan data dan kemudian membuat pertanyaan untuk pesanan yang belum dibayar dan dibuat lebih daripada 10 minit yang lalu. Seterusnya, kami mengemas kini status pesanan ini untuk membatalkan dan mengeluarkan maklumat yang sepadan. Akhir sekali tutup sambungan pangkalan data.

Dengan contoh kod di atas, kami boleh membatalkan pesanan secara automatik setiap 10 minit. Ingat untuk membuat pelarasan yang sepadan mengikut keperluan khusus dan struktur pangkalan data dalam projek sebenar. Saya harap kandungan di atas dapat membantu anda, dan saya berharap anda berjaya dalam melengkapkan fungsi pembatalan pesanan automatik.

Atas ialah kandungan terperinci Tugas berjadual PHP: membatalkan operasi pesanan secara automatik setiap 10 minit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn