外部 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,各位不要说用队列解决。
我只是想搞明白。这个位置是不是堵塞了?

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

在后面执行 artisan 命令再 return

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

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

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

在后面执行 artisan 命令再 return

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

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

finallly了解一下

5年前 评论
giao哥 5年前
giao哥

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

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

可以使用 队列

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

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

在后面执行 artisan 命令再 return

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

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

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

5年前 评论

事件+队列了解一下

5年前 评论

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

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

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