1

我正在测试用 PHP 编写的日志模块。

  1. 网络服务器发生太多事务。
  2. 每个事务都写在同一个文件上。(日志.txt)
  3. 我怎样才能用多行在同一个文件中记录这些事务?

下面的日志示例。

12 月 5 日 01:50:02 [信息] 请求 [1111111111111]:参数 = 1

12 月 5 日 01:50:02 [信息] 请求 [2222222222222]:参数 = 2

12 月 5 日 01:50:02 [信息] RES[2222222222222]:res=20

12 月 5 日 01:50:02 [信息] RES[1111111111111]:res=10

好的,我找到了 uniqid() 的解决方案。

但是它基于时间戳,所以它不是同一时间和同一台机器上唯一的巨大请求。

PHP 不支持线程。如果是其他语言(如 C、JAVA),最好的解决方案是使用 [thread id] 每个线程或进程,我猜。

关于 PHP 的任何想法?

对不起英语不好。

4

2 回答 2

2

首先,检查是否uniqid('', true)提供了足够的熵而没有冗余。

其次,尝试通过会话跟踪人员。这将允许您单独识别人员和交易。

于 2012-12-04T17:25:58.827 回答
1

您可以使用用户的用户 ID。他们将始终是唯一的,对吗?要获得更多唯一性,请尝试对用户 ID 或他们的电子邮件 ID 进行哈希处理,并附加当前的微时间并在日志文件中使用它。即使用户发送重复请求,因为微时间肯定会在连续请求之间发生变化。

$id=$userid.$emailid.uniqid();
$uid=md5($str);

如果在小循环内使用,这可能是个大问题。因为在小循环内,微时间几乎没有变化。

于 2014-04-11T03:00:23.497 回答