想问一个关于在 laravel 里异步执行代码的简单方法

查看 90|回复 5
作者:zengguibo   
class AdminController extends BaseAdminController
{
public function __construct()
{
   
}
public function store(Request $request)
{
    //下面的代码放在后台运行
    UserModel::insert($data);
    //直接返回成功
    $this->success(['desc' => '成功']);
}
}
就是前台调用这个 api 的时候,UserModel::insert($data);这一段放在后台运行,而函数直接返回成功,用队列什么的有点重了,有没有简单点的方法

usermodel, insert, request, function

ysc3839   
没办法。PHP 官方至今还是只支持传统的 CGI 模式,即有请求来了就从头执行脚本,直到脚本退出才算请求完成。因此只要后台执行的代码不退出,客户端的请求就不会完成,会一直等着。
zengguibo
OP
  
@ysc3839 感谢你的回复,这个问题我研究了很久也没找到方法,对于这种运行时间太长的 api ,只能用队列的方式了吗
yesC   
Laravel 的中间件中有个 terminate 方法,可以在把数据响应给客户端后,做一些逻辑处理。
wangxinhui419   
https://www.laruence.com/2011/04/13/1991.html
vjnjc   
PHP 的本质上是单个 request 走到底,没有线程池
异步依赖于 redis 这种中间件
您需要登录后才可以回帖 登录 | 立即注册

返回顶部