【发布时间】:2018-03-22 15:32:17
【问题描述】:
我正在 Laravel 中开发一个应用程序,我的概念是订购将由买家发布以购买特定物品。我有一个像订单生命周期 5 分钟这样的设置。此订单将通知给离买家最近的卖家。 5分钟完成后需要查看已查看的卖家列表,然后需要将订单状态更改为超时。我必须在托管在 VPS 中的 Laravel 应用程序中执行此操作。是否可以创建事件来监听订单并使用订单日期时间和当前日期时间更新状态。现在我有一个类似下面的代码并手动触发这个 API,有没有其他方法可以自动执行此操作。请帮助任何人
$postrequests = Buyrequest::where('request_closed' , 0)->whereDate('request_on', '=', date('Y-m-d'))->get();
if(count($postrequests) >0){
$trade_execution = Adminsetting::where('id_admin_settings', 1)->selectRaw("TIME_TO_SEC(trade_execution_time) / 60 as trade_execution_time")->first();
}
foreach($postrequests as $request){
if(Carbon::createFromFormat('Y-m-d H:i:s', $request->request_on) < Carbon::now()->subMinutes($trade_execution->trade_execution_time)->toDateTimeString()){
if($request->request_status == 0){
Buyrequest::where('id_buyrequest', $request->id_buyrequest)->update(['request_status' => 2, 'request_closed' => 1]);
}else{
Buyrequest::where('id_buyrequest', $request->id_buyrequest)->update(['request_closed' => 1]);
}
}
}
【问题讨论】:
-
可以使用任务调度(即cron作业)
-
我可以用请求头调用 cron 作业吗?因为在我的 Lumen API 中,我为请求创建了身份验证。我也可以每秒运行 cron 吗?性能方面会有什么问题吗?