导航:首页 > 编程语言 > phpuniqid高并发

phpuniqid高并发

发布时间:2023-02-27 06:09:41

php生成10位左右,数字、字母混合的字符串且唯一

$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
$orderSn =
$yCode[intval(date('Y')) - 2017] . strtoupper(dechex(date('m'))) . date(
'd') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf(
'%02d', rand(0, 99));

❷ php解决高并发

<?php

2 //优化方案1:将库存字段number字段设为unsigned,当库存为0时,因为字段不能为负数,将会返回false

3 include('./mysql.php');

4 $username = 'wang'.rand(0,1000);

5 //生成唯一订单

6 function build_order_no(){

7  return date('ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);

8 }

9 //记录日志

10 function insertLog($event,$type=0,$username){

11    global $conn;

12    $sql="insert into ih_log(event,type,usernma)

13    values('$event','$type','$username')";

14    return mysqli_query($conn,$sql);

15 }

16 function insertOrder($order_sn,$user_id,$goods_id,$sku_id,$price,$username,$number)

17 {

18      global $conn;

19      $sql="insert into ih_order(order_sn,user_id,goods_id,sku_id,price,username,number)

20      values('$order_sn','$user_id','$goods_id','$sku_id','$price','$username','$number')";

21      return  mysqli_query($conn,$sql);

22 }

23 //模拟下单操作

24 //库存是否大于0

25 $sql="select number from ih_store where goods_id='$goods_id' and sku_id='$sku_id' ";

26 $rs=mysqli_query($conn,$sql);

27 $row = $rs->fetch_assoc();

28  if($row['number']>0){//高并发下会导致超卖

29      if($row['number']<$number){

30        return insertLog('库存不够',3,$username);

31      }

32      $order_sn=build_order_no();

33      //库存减少

34      $sql="update ih_store set number=number-{$number} where sku_id='$sku_id' and number>0";

35      $store_rs=mysqli_query($conn,$sql);

36      if($store_rs){

37          //生成订单

38          insertOrder($order_sn,$user_id,$goods_id,$sku_id,$price,$username,$number);

39          insertLog('库存减少成功',1,$username);

40      }else{

41          insertLog('库存减少失败',2,$username);

42      }

43  }else{

44      insertLog('库存不够',3,$username);

45  }

46 ?>

❸ thinkphp怎么生成唯一标识

1、md5(time() . mt_rand(1,1000000));
这种方法有一定的概率会出现重复

2、php内置函数uniqid()

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.

w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。

3、官方uniqid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}

public function create_guid($namespace = '') {
static $guid = '';
$uid = uniqid("", true);
$data = $namespace;
$data .= $_SERVER['REQUEST_TIME'];
$data .= $_SERVER['HTTP_USER_AGENT'];
$data .= $_SERVER['LOCAL_ADDR'];
$data .= $_SERVER['LOCAL_PORT'];
$data .= $_SERVER['REMOTE_ADDR'];
$data .= $_SERVER['REMOTE_PORT'];
$hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
$guid = '{' .
substr($hash, 0, 8) .
'-' .
substr($hash, 8, 4) .
'-' .
substr($hash, 12, 4) .
'-' .
substr($hash, 16, 4) .
'-' .
substr($hash, 20, 12) .
'}';
return $guid;
}

❹ php 随机生成不重复用户ID

php可以使用uniqid函数生成唯一的ID

uniqid — 生成一个唯一ID

stringuniqid([string$prefix=""[,bool$more_entropy=false]])

获取一个带前缀、基于当前时间微秒数的唯一ID。

参数说明:

prefix:有用的参数。例如:如果在多台主机上可能在同一微秒生成唯一ID。

prefix为空,则返回的字符串长度为13。more_entropy 为 TRUE,则返回的字符串长度为23。

more_entropy:如果设置为 TRUE,uniqid() 会在返回的字符串结尾增加额外的煽(使用combined linear congruential generator)。使得唯一ID更具唯一性。

返回值:

返回字符串形式的唯一ID。

❺ PHP 中iVBOR是什么函数生成的

在PHP编程中,我们有时候在高并发的时候生成很多个不同的ID,用于标识一些东西。虽然有很多方法,可以实现这一过程,不过PHP还是给我们提供了一个很好的函数,用于生成不同的唯一的ID
PHP中的uniqid()函数
函数定义
uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
语法
uniqid(prefix,more_entropy)

注释:
prefix可选。为 ID 规定前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。
more_entropy 可选。规定位于返回值末尾的更多的熵。
举例说明
利用uniqid()生成一个ID
<?php//XXXXX
echo '输出一个唯一的ID标示符:'.uniqid();?>
echo '输出一个唯一的CHAODIQUAN.COM 标示符:'.uniqid();?>
利用for循环与uniqid()函数,连续生成10个不同的ID标识
代码
<?php//XXXXXXfor($i=1;$i<11;$i++){
echo '输出第'.$i.'个标示符:'.uniqid().'<br/>';}?>

对于uniqid()函数补充

如果我们单纯使用 uniqid()
这个方法,不带任何参数的话,这个方法只能保证单个进程,在同一个毫秒内是唯一的。如果使用uniqid("", true)。
带了一个墒值,自身已经有一个随机的方式能保证生成的id的随机性了。但是由于线性同余是比较简单的生成随机数的算法,随机性有可能还不够,所以,网上流传的一种更随机数值的方式是:
uniqid(mt_rand(), true)

其中
mt_rand() 生成随机数就不是使用线性同余生成随机数的方式了,而是使用 Mersenne Twister Random Number
Generator (梅森旋转算法)。换句话说,上面这个 id 由两种随机算法 +
时间戳生成。基本上,这个算法在很大程度上能保证唯一性了(如果要问冲突率的话,估计只有数学系学生能研究出来了...)。
上面的这个给出的id会有一个点号,而且长度并不是128bit。如果希望生成uuid,就需要一个hash,不管是md5,sha1 都是可以选择的。所以网上又有一种生成唯一码的方式。
md5(uniqid(mt_rand(), true))
复制
但是,本质上,这两种方式的随机性是相等的。

阅读全文

与phpuniqid高并发相关的资料

热点内容
安卓快手下载怎么没有下载到本地 浏览:228
怎么在安卓手机登绘旅人 浏览:404
桌面文件全部加密 浏览:401
6s怎么外接u盘需要什么app 浏览:131
linux查看文件权限命令 浏览:685
安卓手游存档怎么用 浏览:761
linuxyum安装ftp 浏览:690
村委会主任可以推行政命令吗 浏览:102
电脑文件夹封面多张图片 浏览:263
网吧总服务器叫什么 浏览:922
多个算法解决同一个问题 浏览:455
小车解压后我的购车发票呢 浏览:977
做app开发用什么云服务器 浏览:177
linux网卡子接口 浏览:985
21岁职高毕业学程序员怎么学 浏览:321
vs如何对单个文件编译 浏览:6
为什么有的电脑不能安装python 浏览:75
金蝶迷你版加密狗检测到过期 浏览:186
硬件描述语言编译结果 浏览:655
程序员逆天改命 浏览:19