Php 此函数是否会使strSerial始终唯一?
这个函数会使一个项目的Php 此函数是否会使strSerial始终唯一?,php,sql-server,Php,Sql Server,这个函数会使一个项目的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);
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);
以下是您的变量:
$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>";
我添加了微时间:
$date_micro= date("YmdHis").substr((string)microtime(), 1, 6);
$removedote=explode('.',$date_micro);
$new_date= $removedote[0].$removedote[1];
echo $new_date."<br>";
有了微时间,我想这将是一个独一无二的数字
编辑:
现在呢
$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>";
$x=explode(“”,microtime());
$y=爆炸('',微时间());
$new_val=$y[0]*$x[0];
$nSerialLo=($new_val.date('s')。date('i')+date('H'))*兰特(014);
$z=爆炸('.',$N爆炸);
$nSerialHi=($z[1].$x[0]。$idate('U')%$x[1])。兰特(0,1024);
echo$nSerialLo.“
”;
echo$nSerialHi.“
”;
您可以这样添加微秒:
$nSerialLo = ($x[0] . date('u') . date('s') . date('i') + date('H')) . rand(0, 1024);
但是,这并不能保证你不会与你的连续剧发生冲突,因此我建议你将你的连续剧存储在数据库中,并检查它是否是以前创建的。通过
strSerial
你的意思是$nSerial
?是的,strSerial是为了使游戏中的项目唯一,因此重复扫描程序不会删除它。(所有物品都应该有唯一的序列号,否则它将被视为复制物品(非法))目前它是唯一的,但有时它不是。。。为什么会这样?有时,我们最终会有两个不同的项目具有相同的结构序列,而它们本应具有唯一性。我相信它们是在同一个日期时间获得的,因为我看到脚本得到的是日期时间?所以,使用微秒,检查“date”(“Y/m/dh:I:s”)。substr((string)microtime(),1,6);“为什么这个问题用sql server标记?这似乎与此无关?谢谢,但我想我现在有了$x=explode(“”,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>";
$nSerialLo = ($x[0] . date('u') . date('s') . date('i') + date('H')) . rand(0, 1024);