我想选择并使用仅在Cron作业运行和下一次运行之间插入的新记录。从这个意义上讲,我不会重复我之前工作的任何数据或记录。
从下面的选择声明中,有人指导我,谢谢。
// select statement should pick fresh records only after the first cron
$sql = "SELECT name,amount, trans_id, msisdn, time_paid FROM customer";
$result1 = mysqli_query($conn, $sql);
$resultarr = mysqli_fetch_assoc($result1); // fetch data
$name = $resultarr['name'];
$amount = $resultarr['amount'];
$transaction_id = $resultarr['trans_id'];
$date = $resultarr['time_paid'];
这很重要,因为数据将用于发送短信,我不想向某人发送短信两次。
亲切的,有人吗?
答案 0 :(得分:1)
在表格中添加一个名为notification_sent的新列。 现在,每个cron运行时都会添加一个where子句,并且只获取notification_sent设置为0的数据,如下所示:
SELECT name,amount, trans_id, msisdn, time_paid FROM customer where notification_sent = 0;
获取数据后,会向这些用户发送电子邮件通知,并将该标志更新为notification_sent为1。
下次你不再重复发送它们了。
答案 1 :(得分:0)
在该表中添加新列状态和sent_at。 运行cron作业后,您可以更新状态和sent_at
SELECT name,amount,trans_id,msisdn,time_paid FROM customer where status = 0;
如果要以固定间隔运行cron作业,可以在where condition中使用sent_at列。
SELECT name,amount,trans_id,msisdn,time_paid FROM customer where status = 0 and sent_at!=?;
cron成功后你可以使用
更新表设置状态= 1其中trans_id in(trans_id1,trans_id2 .. trans_idn )
根据您的要求条件