猿问

laravel 怎么异步执行 自定义Artisan Command

目前项目中遇到一些耗时比较长的第三方请求,所以想着写一个command来异步执行这些耗时的第三方请求。在用户请求相关接口时触发command,然后异步执行command。这时用户不需一直等待command的结果,可以继续浏览。
代码:

public function sync(){

        $enterId     = $this->request->input('enter_id');
        $warehouseId = $this->request->input('warehouse_id');
        $personId    = $this->request->attributes->get('person')->id;
        $warehouse   = Warehouse::getById($warehouseId, $enterId);
        $warehouse->syncValid(); //同步校验
        $commandKey = ['key' => 'SYNC_FBA','enterprise' => $enterId, 'warehouse'=>$warehouseId];
        $commandId  = CommandLog::getCommand($enterId,  $personId, $commandKey);
        Artisan::call('sync:fba',[            'enterprise'=> $enterId,            '--warehouse'=> $warehouseId,            '--command'=> $commandId,            '--help'=>true
        ]); //执行同步FBA

        return $this->response(['data'=>['command_id'=>$commandId]]);
    }

请问各位大佬,怎样可以可以异步执行sync:fba这个命令


吃鸡游戏
浏览 3200回答 1
1回答
随时随地看视频慕课网APP
我要回答