我在laravel中构建在线交易应用程序(限价订单簿)
在此应用程序用户位置购买订单或销售订单
并且根据订单的价格和数量来匹配。
对于订单匹配,我使用价格/时间优先算法
我设置了一个在运行订单匹配脚本的服务器上每分钟运行一次的cron作业,我使用laravel任务调度来执行cron作业
cron job script就像这样
fetch 1000 records in database perform order matching on those records
假设在12:00:00 PM,数据库中有1000个待处理订单,而下午12:00:00运行cron作业,并在12 :: 00 :: 20PM完成
但是在12 :: 01 :: 00PM创建的订单必须等待40秒才能执行
所以如何设置将连续运行的cron
class orderMatch extends Command{
public function handle(){
$orders = \App\Order::where(['status' => 0])->limit(1000)->orderBy('id','ASC')->get();
foreach ($orders as $order) {
$this->processOrder($order);
}
}
}
并且在kernal.php中我有这段代码
$schedule->command('ordermatch:run')->everyMinute()->withoutOverlapping();
由于