2012-12-04 58 views
1

我正在测试写入PHP的日志模块。我怎样才能在PHP中获得唯一的事务ID?

  1. 网络服务器发生太多事务。
  2. 写入同一文件的每笔交易。 (log.txt)
  3. 我怎么能记录这个交易在同一个文件多行?

下面的日志示例。

12月5日1点50分02秒[信息] REQ [1111111111111]:PARAM = 1

12月5日1点50分02秒[信息] REQ [2222222222222]:PARAM = 2

12月5日一点50分02秒[信息] RES [2222222222222]:RES = 20

12月5日一点50分02秒[信息] RES [1111111111111]:RES = 10

好,我发现uniqid()的解决方案。

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

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

PHP的任何想法?

对不起英语不好。

+0

也许使用$ _SESSION? –

回答

2

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

其次,尝试跟踪sessions的人。这将允许您单独识别人员和交易。

1

您可以使用用户的userid。他们将永远是唯一的权利?为了获得更多的唯一性尝试散列用户标识符或他们的电子邮件ID,并附加当前microtime并将其用于日志文件中。这将主要即使用户发送重复请求也是唯一的,因为microtime将在连续请求之间明确地改变。

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

这可能是一个很大的问题,如果在小循环内使用。因为小循环内microtime几乎没有变化。

+1

+1也是个好主意 – TaeL