外部 Artisan::call 异步的问题

事情是酱紫的,我有一个任务,我想通过ajax发送一个请求,然后执行Artisan::call 然后不等待,直接返回一个状态码;

比如我在A页面通过ajax发起一个请求给B
B收到请求,执行Artisan::call() 返回一个状态码, 这个时候我发现ajax一直在等待,状态码一直没返回;
那么问题来了,是不是Artisan::call堵塞了?

B页面代码:

 public function initStorage() {
        $params = Request()->all();
        Artisan::call('command:MovieInit', [
            'method'=>'init', 'disk_id'=>$params['disk_id'], 'recursive'=>$params['recursive'], 'path'=>$params['path']
        ]);
        return response()->json(['code' => 0, 'msg' => '完成!']);
    }

我就是想执行Artisan::call() 然后不等待,直接执行 return response()->json(['code' => 0, 'msg' => '完成!']);

可是现在一直在等待。这咋办?就不能丢去后台么?

我木有用别的东西,就只有mysql,各位不要说用队列解决。
我只是想搞明白。这个位置是不是堵塞了?

如果是堵塞了,请问有啥办法曲线救国?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

response()->json()->send() 放前面, 不要写 return

在后面执行 artisan 命令再 return

ref: http://www.laruence.com/2011/04/13/1991.ht...

4年前 评论
luci 3年前
hldh214 (作者) 3年前
luci 3年前
讨论数量: 7

response()->json()->send() 放前面, 不要写 return

在后面执行 artisan 命令再 return

ref: http://www.laruence.com/2011/04/13/1991.ht...

4年前 评论
luci 3年前
hldh214 (作者) 3年前
luci 3年前

finallly了解一下

4年前 评论
giao哥 4年前
giao哥

可以使用异步 比如 swoole,你可以去 github 搜索 laravels

4年前 评论
hackxiaoya (楼主) 4年前

可以使用 队列

4年前 评论
hackxiaoya (楼主) 4年前

response()->json()->send() 放前面, 不要写 return

在后面执行 artisan 命令再 return

ref: http://www.laruence.com/2011/04/13/1991.ht...

4年前 评论
luci 3年前
hldh214 (作者) 3年前
luci 3年前

推送到队列 Artisan::queue();

4年前 评论

事件+队列了解一下

4年前 评论

兄弟,有解决方案吗?我也是想Artisan:call,不想跑队列,但也不想等待

3年前 评论
hackxiaoya (楼主) 3年前
Arsenal_jie (作者) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!