这是我的问题。
我有一个MySQL表,其中包含从php脚本处理的订单表单的详细信息。捕获的详细信息包括订购的产品、商店位置等。我可以看到,所有所需的详细信息都被保存到数据库中,没有任何问题。
现在我有一个脚本,它每天从cron作业调用两次。该脚本在数据库中查询特定日期范围内的订单,然后将输出保存到文本文件中,然后用户下载并使用第三方软件进行处理。
我的问题是,cron作业调用的这个脚本缺少一些订单,但这种情况并不总是发生。
如果我运行与cron作业在phpmyadmin中手动调用的查询完全相同的查询,则订单将显示在输出中。
有什么我应该看的,以确保所有的订单都被捕获。
提前感谢您的帮助。
查询1-此cron每天下午12:05运行
SELECT o.orderID, o.orderTotal, oi.code, oi.orderQty, p.prodName, p.prodCode, s.store_name, s.store_address
FROM orders o
INNER JOIN items oi ON o.orderID = oi.orderID
INNER JOIN products p ON oi.productID = p.prod_id
INNER JOIN store s ON o.orderStoreID = s.store_id
WHERE o.orderDateTime BETWEEN CAST('$overnightStart' AS DATETIME) AND CAST('$overnightEnd' AS DATETIME)
查询2:cron每天晚上9:05运行
SELECT o.orderID, o.orderTotal, oi.code, oi.orderQty, p.prodName, p.prodCode, s.store_name, s.store_address
FROM orders o
INNER JOIN items oi ON o.orderID = oi.orderID
INNER JOIN products p ON oi.productID = p.prod_id
INNER JOIN store s ON o.orderStoreID = s.store_id
WHERE o.orderDateTime BETWEEN CAST('$todayStart' AS DATETIME) AND CAST('$todayEnd' AS DATETIME)
这是我用来生成日期的代码。
date_default_timezone_set('Australia/Victoria');
$overnightStart = date("Y-m-d H:i:s", strtotime("yesterday 21:00:00"));
$overnightEnd = date("Y-m-d H:i:s", strtotime("today 11:59:59"));
$todayStart = date("Y-m-d H:i:s", strtotime("today 12:00:00"));
$todayEnd = date("Y-m-d H:i:s", strtotime("today 20:59:59"));
我认为PHP时区可能有问题。如果cron作业不使用相同的时区,则可以在cron作业之后编写一些订单,但日期在之前。当你在(或更长时间,德尔塔时区)后尝试超过1小时后,就可以了