【问题标题】:how can i get unique transaction id in PHP?如何在 PHP 中获取唯一的交易 ID?
【发布时间】:2012-12-04 17:14:30
【问题描述】:

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

  1. 网络服务器发生太多事务。
  2. 每个事务都写入同一个文件。 (log.txt)
  3. 如何在同一个文件中多行记录这些事务?

以下日志示例。

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

Dec 05 01:50:02 [info] REQ[2222222222222]: param=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 有任何想法吗?

抱歉英语不好。

【问题讨论】:

    标签: php multithreading transactions unique-id


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 2015-03-28
        • 2015-01-09
        • 2016-04-13
        • 1970-01-01
        • 2023-03-13
        • 2023-03-25
        相关资源
        最近更新 更多