php - 如何在请求的整个生命周期中保留请求数据 Laravel Lumen?
问题描述
我正在使用 Lumen 构建一个 API,并且我试图找出在整个请求期间将数据保存在内存中的最佳方法。这个想法是避免写入数据库或使用类似Redis
or的东西Memcached
。所以,基本上,我想创建一个全局变量,我可以一直操作它,直到 http 操作完成,然后它可以从内存中消失。
例如,如果我向POST
我的路由发送带有正文的请求/api/v1/postme
,我想接受 POST 请求并再次调用另一个服务以检索一些数据。我想获取该数据并将其与POST
请求中的原始数据合并。然后,我想获取新合并的数据,并在进行更多翻译后将其作为响应发送。
我在网上的一些帖子中读到,可以使用.env
文件中的应用程序配置变量作为内存中数据的临时存储,但我想知道是否有不同的或可能更好的方法来实现这一点。
我通读了 Laravel/Lumen 文档,似乎我可以写入 Lumen 缓存,但我认为这会导致建立数据库连接,这不是我想要的。
解决方案
如果您想使用 lumen 的配置模块,请按照此操作。
当请求到达时,点击 myfunc
控制器.php
public function myfunc(Request $request){
app('config')->set('someuniquekey', $request);
// call some other api
$client = new \GuzzleHttp\Client(..);
$response = $client->post(..);
//retrive the value stored in config
$request= config('someuniquekey');
//merge $request and $response
//This can be accessed in class method/ helper function too
$this->func2();
func3();
}
private function func2(){
$request= config('someuniquekey'); // WORKS
}
助手.php
function func3(){
$request= config('someuniquekey'); // WORKS
}
推荐阅读
- dictionary - 如何链接 LinkedList 节点以映射值
- opengl - GLFW_TRANSPARENT 和 GLFW_ALPHA_MASK 未定义
- python - Keras - Glorot 统一初始化器:输入和输出单元?
- javascript - 在生产环境中构建和运行时找不到模块“./static”
- wordpress - 如何在加载网页 5 分钟后运行 Javascript 代码?
- sql - 如何在 Redshift 中做分层随机样本?
- python - Python protobuf "from google.protobuf.pyext import _message" - "ImportError: DLL load failed: The specified procedure could not be found"
- android - 读取安卓账户数据
- docker - UCP:无法成功设置本地节点。运行“docker logs ucp-reconcile”以获取更多详细信息
- json - 0auth2 API 调用的 PowerShell 标头