如何防止脚本终止或超时?

时间:2014-11-05 20:20:40

标签: php mysql

我有一个简单的表格,其中包含应在特定时间执行的不同操作:

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列没有更新,它将在下次运行时再次执行。

这种方法总体上有问题吗?什么是“最佳实践”?

0 个答案:

没有答案