【问题标题】:Set variable with time to use as random随时间设置变量以用作随机数
【发布时间】:2014-02-14 09:01:22
【问题描述】:

如果我设置一个变量如下:

$randNum = md5(time());

并使用它来创建:

$tempFileName = $randNum.'_temp.'.$type;

然后,在脚本的后面:

$newFileName = $randNum.'_new.'.$type;

它会第二次生成一个新的随机数还是$randNum 的值与第一次相同?

【问题讨论】:

  • $randNum = md5(time());用过一次,你还在用吗?
  • 不再次拨打$randNum = md5(time());同第一次
  • 创建一个生成随机数的函数并一遍又一遍地调用该函数。比如function RandomNumber() { return md5(time()); },测试用例:for ($i=0; $i<10; $i++) { echo RandomNumber(), "\n"; }
  • 这里有一个竞争条件。 time() 的粒度只有 1 秒。如果脚本在一秒钟内运行两次,那么第二次运行时它将覆盖第一次运行的文件。
  • 另外请记住,使用time() 不是一个好主意,因为它可能会阻塞并发访问,而是使用uniqid()

标签: php variables random


【解决方案1】:

试试这个,

$newFileName = $randNum.'_new.'.$type;

而不是

$newFileName == $randNum.'_new.'.$type;

输出:

87bc7ff76220f988dd191bd804482bff_temp.
87bc7ff76220f988dd191bd804482bff_new.  

【讨论】:

  • 抱歉,有问题。我没有使用== :)
【解决方案2】:

$randnum 值将与第一个值相同。如果有疑问,只需测试它:

$randNum = md5(time());
echo $randNum;
sleep(5);// sleep for 5 seconds
echo $randNum;

值将相同。

【讨论】:

  • “应该”?您可以将其更改为“必须”。如果它们不相同,则说明您的 PHP 出现了严重问题。 :)
  • 我会说你必须把它改成必须的。
  • 是的,我已经更改了措辞。感谢您的关注。
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 2020-01-23
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多