当cron开始工作时如何选择新记录

时间:2016-06-13 13:33:38

标签: php mysql mysqli cron

我想选择并使用仅在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'];

这很重要,因为数据将用于发送短信,我不想向某人发送短信两次。

亲切的,有人吗?

2 个答案:

答案 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 )

根据您的要求条件