0

此函数是否会使strSerial项目的 始终唯一,或者它只获取日期时间,如果有人同时执行脚本,他们会得到相同的strSerial

  $x = explode(' ', microtime());
  $nSerialLo = ($x[0] . date('s') . date('i') + date('H')) . rand(0, 1024);
  $nSerialHi = (date('d') . date('m') . (date('Y') % 100)) . rand(0, 1024);
  $nSerial = $pEquipped->ToUInt64($nSerialHi, $nSerialLo);
  $pItem->SetNum($nItemID)->SetSerial($nSerial)->SetDurability($nDurability)->SetCount(1);
4

2 回答 2

0

这些是你的变量:

  $nSerialLo = ($x[0] . date('s') . date('i') + date('H')) . rand(0, 1024);
  $nSerialHi = (date('d') . date('m') . (date('Y') % 100)) . rand(0, 1024);
echo  $nSerialLo."<br>";
echo $nSerialHi."<br>";

它的回报:

4930701
140613904

我添加了微时间:

$date_micro= date("YmdHis").substr((string)microtime(), 1, 6);
$removedote=explode('.',$date_micro); 
$new_date= $removedote[0].$removedote[1];
echo $new_date."<br>";

它的回报:

2013061415154969409

使用 microtime,我认为这将是一个独特的数字

编辑:

现在呢?

$x = explode(' ', microtime());
  $y = explode(' ', microtime());
  $new_val=$y[0] * $x[0];
  $nSerialLo = ($new_val . date('s') . date('i') + date('H')) * rand(0, 1024);
  $z = explode('.', $nSerialLo);
  $nSerialHi = ($z[1] .$x[0] . (idate('U') % $x[1])) . rand(0, 1024);
  echo  $nSerialLo."<br>";
  echo $nSerialHi."<br>";
于 2013-06-14T18:20:04.007 回答
0

您可以像这样添加微秒:

$nSerialLo = ($x[0] . date('u') . date('s') . date('i') + date('H')) . rand(0, 1024);

但是,这并不能保证您不会与连续剧发生冲突,因此我建议您将连续剧存储在数据库中并检查它是否是之前创建的。

于 2013-06-14T18:43:30.237 回答