gpt4 book ai didi

php - php yii2 的访问日志系统?

转载 作者:可可西里 更新时间:2023-11-01 16:39:11 25 4
gpt4 key购买 nike

我正在使用 PHP 开发一个网站,特别是使用 YII 2 框架k。 Web服务器使用的是NginxPHP引擎是php-fpm。问题是我想跟踪哪个用户访问了哪个带有参数的 webpage URL 地址。 Yii2 本身有一个日志系统,但主要用于错误和调试目的。我知道 nginx 有日志系统可以记录访问日志,但我需要记录我数据库中的确切用户 ID、用户名,我认为 nginx 不能记录这个。

我想在用户每次访问页面时将这些信息记录到另一个Mysql表中,但我担心该表可能会增长很快,看来使用关系数据库可能不是一个好主意。

我应该使用 Hadoop 吗?或者其他解决此类问题的常见做法?感谢您的任何建议。

最佳答案

如果你愿意

track which user accessed which webpage URL address with parameters,

nginx 访问日志是更好的选择,因为 mysql 会大大损害你的性能。

假设用户id是查询字符串中的参数uid,您可以通过添加字段$arg_uid来自定义nginx的访问日志。如果用户 ID 是 uri 的一部分,您可能需要使用正则表达式配置位置以捕获它。

如果用户id不能直接从request中获取,那么必须有一个token与一个且只有一个用户相关联,可以从mysql或redis中获取。在这种情况下,有 2 种方法:

  1. 返回用户 id 作为标题,例如 php 中的 X-UID,然后在访问日志中添加变量 $upstream_http_X_UID。如果您不想将此 header 返回给客户端,请添加指令 proxy_hide_header X-UID; 以从 php 响应中删除此 header 。
  2. 使用 nginx-lua 构建 nginx模块并为 log_by_lua 指令编写一段 lua 脚本,其中根据该 token 从 mysql 或 redis 查询用户 ID。然后通过添加用户id变量自定义nginx的访问日志。

根据您的具体场景,选择最佳方案。希望对您有所帮助。

关于php - php yii2 的访问日志系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45116783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com