此函数是否会使某个项目的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);
答案 0 :(得分: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
我添加了microtime:
$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>";
答案 1 :(得分:0)
您可以像这样添加微秒:
$nSerialLo = ($x[0] . date('u') . date('s') . date('i') + date('H')) . rand(0, 1024);
但是,这并不保证您不会与序列号发生冲突,因此我建议您将序列号存储在数据库中并检查它是否是之前创建的。