File manager - Edit - /home/webapp69.cm.in.th/u69319090030/030 shop/config/auto_cancel.php
Back
<?php require_once __DIR__ . '/db.php'; function auto_cancel_expired_orders($pdo) { try { // ค้นหาออเดอร์ที่สถานะเป็น pending และสร้างเกิน 30 นาทีแล้ว $stmt = $pdo->prepare("SELECT id FROM orders WHERE status = 'pending' AND created_at < NOW() - INTERVAL 30 MINUTE"); $stmt->execute(); $expiredOrders = $stmt->fetchAll(PDO::FETCH_COLUMN); if (!empty($expiredOrders)) { $pdo->beginTransaction(); foreach ($expiredOrders as $order_id) { // ดึงรายการสินค้าที่ถูกจองไว้ในออเดอร์ เพื่อคืนสต็อกสินค้า $stmtItems = $pdo->prepare("SELECT product_id, quantity FROM order_items WHERE order_id = ?"); $stmtItems->execute([$order_id]); $items = $stmtItems->fetchAll(); $stmtRestock = $pdo->prepare("UPDATE products SET stock = stock + ? WHERE id = ?"); foreach ($items as $item) { $stmtRestock->execute([$item['quantity'], $item['product_id']]); } // อัปเดตสถานะออเดอร์เป็น cancelled $stmtCancel = $pdo->prepare("UPDATE orders SET status = 'cancelled' WHERE id = ?"); $stmtCancel->execute([$order_id]); } $pdo->commit(); } } catch (Exception $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } error_log("Auto cancel orders error: " . $e->getMessage()); } } // เรียกทำงานทันทีเพื่อตรวจเช็คออเดอร์หมดอายุทุกครั้งที่มีการโหลดหน้าเว็บ auto_cancel_expired_orders($pdo);
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings