【发布时间】:2014-11-01 00:39:39
【问题描述】:
我有多个服务器执行作业的问题。他们都从同一个 API 请求工作列表,并且需要用唯一的 id 来识别他们。这样我就知道哪个服务器正在运行哪些作业并且没有分布冲突等。
我现在正试图找出一种生成唯一服务器 ID 的方法。它永远保持不变并不重要。但它应该是独一无二的。
我注意到 phpinfo() 中的 PHP 构建时间,但找不到任何有关它的文档。如果 php 作为二进制包安装怎么办?如果两台服务器使用相同的包,它可能不会改变。
我更喜欢某种主板序列号之类的。
是的,它应该是便携的。所以我宁愿避免使用 shell_exec 左右调用 shell 命令。
也可以选择外部 IP。但是如何可靠地确定“外部”IP 地址呢?如果还有更多呢?如果它是 natted 怎么办?然后我需要外部和内部地址的组合。
我可以请求 API 一次并要求它给我外部 IP 地址并合并。但这会变得复杂而广泛……
您对此有什么建议吗?
【问题讨论】:
-
不,它不是 @Mark Baker 的副本。因为我不需要只生成一个唯一的 id,所以我要求它在每个系统中都是唯一的,并且在再次应用相同的算法时保持不变。
-
您写道“永远保持不变并不重要”——它如何与“保持不变”的陈述相匹配?
-
“不是永远”并不意味着每次。它需要保持不变才能使流程正常工作。但如果它发生变化,一些工作就会“丢失”。就像服务器发生故障一样。然后清理工作获取它们。该应用程序将正常工作。但如果变化太大,它将无法工作,或者只会产生巨大的开销。
标签: php serial-number