laravel引入swoole,通过swoole控制器获取Auth::user()时显示null
前提
最近在laravel中尝试使用swoole来代替一些http请求,在swoole控制器中,use对应模块的控制器,实例化后调用获取result,但是遇到一个问题,就是:
- 用户在登录后(也就是保存了Auth信息),通过http请求,是可以获取到登录的用户信息
use Illuminate\Support\Facades\Auth; dd(Auth::check()); //true - 但是通过swoole控制器获取时显示false,Auth::user()也为null
才疏学浅,我觉得一个原因是因为swoole处于长连接的状态导致获取不到Auth,又或者是其他的问题,希望有大佬能指点一二,感谢!dd(Auth::check()); //false dd(Auth::user()); //null
另外还有个疑问,如果实在是获取不到这个登录态,我是不是可以在用户登录后将用户标识返回前端保存起来,请求都是带着这个标识,这样就不用去后端请求获取Auth??
关于 LearnKu
常驻内存后request请求每次需要重置,不可看一下请求信息是不是不变的!
默认的 auth 是基于 session 的,引入 swoole 后,我猜 laravel 默认的 session 应该没用了
这种变量污染是最常见的,不常见的更难发现和处理。Laravel团队对Swoole一点想法都没有,生产环境慎用。
真觉得性能不太行可以用阿里云的函数计算、腾讯云的Serverless,代码基本上不用改动,性能也足够用了。
PS:如果用阿里云的函数计算那么“单实例并发度”一定要设置为1,越大性能越差。
用swoole做一些自定义进程操作,异步任务投递的功能还可以,用来替代php-fpm的话建议直接用基于swoole的框架
@Linxb 那就是说向这种要用到sission操作的就不能获取到了是吗,只能靠onRequest才能弄?
不要将 pfm 和 swoole 强行结合起来 要么纯fpm 要么swoole
你这个问题解决没?
swoole 里面身份还是得用fd去查询用户