PHP中的Time()函数

时间:2013-12-16 17:13:26

标签: php

我只是想问,因为我正在编写脚本,而我正在使用time()作为我正在做的事情的盐。

现在发生的事情是我正在将从服务器1发送的数据转移到服务器2.服务器2检查data = submitted_data + time()是否完全匹配。我想知道,因为我的脚本将在不同的服务器上使用,time()函数是否会返回相同的值(如果它们位于世界的不同地方?)

客户端的代码示例是:

if($return == md5("true" . time()))

一个代码示例,如果正确提交的数据将返回此信息:

echo md5('true' . time());

两者都在世界不同地区的不同服务器上,但我想知道使用time()是否会破坏我的系统的运行方式..?

1 个答案:

答案 0 :(得分:0)

这不起作用,因为time()依赖于系统的本地时钟,几乎可以保证在任何两台计算机/时钟之间不同步。其次,您不能保证操作系统何时给定进程运行时间;因此,一台服务器可能只是毫秒关闭,因为它正在做其他密集的事情。然后你有网络延迟等等。

对于分布式系统来说,这是一个重要问题,它必须保持“同步”而不确切知道何时发生了哪些动作。 (如果数据库分布在多个服务器上,那么这个数据库的更新是否应该发生在那个数据库之外?)最好不要因为这个原因而依赖时间,但也许还有其他一些东西,例如修订号(然后增加) )。例如:

  • 服务器发送修订版ID = 142的数据(注意'142'对于此示例是任意的)
  • 客户端进行更改,增加修订并哈希值。
  • 客户端使用散列版本号将数据发送到服务器。
  • 服务器递增它自己的修订版ID并对其进行哈希处理。这应该等于客户发送的内容。
  • 如果没有,则服务器拒绝数据发送。

这使您能够在不依赖于不一致的外部资源的情况下模拟时间。