我只是想问,因为我正在编写脚本,而我正在使用time()
作为我正在做的事情的盐。
现在发生的事情是我正在将从服务器1发送的数据转移到服务器2.服务器2检查data = submitted_data + time()
是否完全匹配。我想知道,因为我的脚本将在不同的服务器上使用,time()
函数是否会返回相同的值(如果它们位于世界的不同地方?)
客户端的代码示例是:
if($return == md5("true" . time()))
一个代码示例,如果正确提交的数据将返回此信息:
echo md5('true' . time());
两者都在世界不同地区的不同服务器上,但我想知道使用time()
是否会破坏我的系统的运行方式..?
答案 0 :(得分:0)
这不起作用,因为time()
依赖于系统的本地时钟,几乎可以保证在任何两台计算机/时钟之间不同步。其次,您不能保证操作系统何时给定进程运行时间;因此,一台服务器可能只是毫秒关闭,因为它正在做其他密集的事情。然后你有网络延迟等等。
对于分布式系统来说,这是一个重要问题,它必须保持“同步”而不确切知道何时发生了哪些动作。 (如果数据库分布在多个服务器上,那么这个数据库的更新是否应该发生在那个数据库之外?)最好不要因为这个原因而依赖时间,但也许还有其他一些东西,例如修订号(然后增加) )。例如:
这使您能够在不依赖于不一致的外部资源的情况下模拟时间。