我有一个简单的表格,其中包含应在特定时间执行的不同操作:
ID | action | timestamp | done
================================
1 | act_1 | 1415217793 | 0
2 | act_2 | 1415217793 | 0
3 | act_3 | 1415217793 | 0
4 | act_4 | 1415217793 | 0
5 | act_5 | 1415217793 | 0
当达到某个时间戳时,act_#
会被执行
act_#
成功执行后,done
列获取执行时间戳(知道哪些已经进展)
我目前通过SQL获取数据并运行带有这样的foreach循环的PHP脚本(简化):
foreach ( actions as action ){
// do the action
$success = do(action);
if($success){
//update table and set `done` to a timestamp
}else{
//don't update
}
}
action
可能非常耗费资源,因此可能会失败。如果action
得到执行但没有返回true
或脚本因任何原因停止执行该怎么办?
done
列没有更新,它将在下次运行时再次执行。
这种方法总体上有问题吗?什么是“最佳实践”?