php 如何创建uuid
传统的创建uuid的方法是自己写个函数实现随机
<?php
function create_uuid($prefix="") {
$chars = md5(uniqid(mt_rand(), true));
$uuid = substr ( $chars, 0, 8 ) . '-'
. substr ( $chars, 8, 4 ) . '-'
. substr ( $chars, 12, 4 ) . '-'
. substr ( $chars, 16, 4 ) . '-'
. substr ( $chars, 20, 12 );
return $prefix.$uuid ;
} $uuid = create_uuid();
var_dump($uuid);
不过现在有扩展了 就使用扩展吧
使用 apt search uuid 搜索一下
sudo apt search uuid
得到结果

然后就安装吧
使用命令
sudo apt-get install php7.4-uuid
安装
$ sudo apt-get install php7.4-uuid
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'php-uuid' instead of 'php7.4-uuid'
The following NEW packages will be installed:
php-uuid
0 upgraded, 1 newly installed, 0 to remove and 95 not upgraded.
Need to get 8,520 B of archives.
After this operation, 51.2 kB of additional disk space will be used.
Get:1 http://cn.archive.ubuntu.com/ubuntu focal/universe amd64 php-uuid amd64 1.1.0-1build1 [8,520 B]
Fetched 8,520 B in 1s (14.4 kB/s)
Selecting previously unselected package php-uuid.
(Reading database ... 222525 files and directories currently installed.)
Preparing to unpack .../php-uuid_1.1.0-1build1_amd64.deb ...
Unpacking php-uuid (1.1.0-1build1) ...
Setting up php-uuid (1.1.0-1build1) ...
Processing triggers for libapache2-mod-php7.4 (7.4.3-4ubuntu2.4) ...
Processing triggers for php7.4-cli (7.4.3-4ubuntu2.4) ...
可以看到此时扩展已经有了
$ php -m |grep uuid
uuid
web 端需要 sudo /etc/init.d/apache2 restart 一下
然后 phpinfo()

之后使用php 函数 uuid_create 即可。
<?php $uuid = uuid_create(1);
var_dump($uuid);
cli 端得到
string(36) "a84f0c4e-a24b-11eb-87fd-9f2061574580"
web 端得到

经过测试发现还是扩展的方式实现更快。
传统方式实现uuid 100万次
代码
<?php
function create_uuid($prefix="") {
$chars = md5(uniqid(mt_rand(), true));
$uuid = substr ( $chars, 0, 8 ) . '-'
. substr ( $chars, 8, 4 ) . '-'
. substr ( $chars, 12, 4 ) . '-'
. substr ( $chars, 16, 4 ) . '-'
. substr ( $chars, 20, 12 );
return $prefix.$uuid ;
} $start_time = microtime(true);
for ($i=0; $i < 1000000; $i++) {
$uuid = create_uuid(1);
}
$end_time = microtime(true);
var_dump(($end_time-$start_time));
exit;
效果

扩展实现
<?php
$start_time = microtime(true);
for ($i=0; $i < 1000000; $i++) {
$uuid = uuid_create(1);
}
$end_time = microtime(true);
var_dump(($end_time-$start_time));
exit;

效率几乎提升一倍啊!看来还是扩展厉害啊,毕竟扩展都底层语言了嘛。
不过单次执行一次来看时间几乎可以忽略不计
传统方式得到的时间是 4.9829483032227E-5
扩展方式得到的时间是 2.6941299438477E-5
但是单次的这个耗时对比极不稳定,有时候传统方式用时反而短,这个扩展有时候时间也用的长,这说明单次其实两者并没有太大差异。而如果这个东西用到了百次 、万次循环的时候,它使用扩展就很有用了。
php 如何创建uuid的更多相关文章
- iOS创建UUID
- (NSString *)getUUID { CFUUIDRef uuidObj = CFUUIDCreate(nil); //create a new UUID NSString * uuidSt ...
- c++ 创建 uuid guid
如果没安装,先安装: [root@localhost]# yum install libuuid-devel #include "uuid/uuid.h" 引用 libuuid.s ...
- [转帖]瀚高数据库创建uuid的方法
使用syssso登录,并执行下列语句 highgo=> select set_secure_level('off'); set_secure_level -------------------- ...
- UUID的具体用法
String deleteUuid = UUID.randomUUID().toString(); java.util 类 UUID java.lang.Object java.util.UUID 所 ...
- java 的UUID的具体用法
参照JDK public final class UUIDextends Objectimplements Serializable, Comparable<UUID> 表示通用唯一标识符 ...
- Java生成唯一GUID UUID
GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值. GUID ...
- 一个UUID生成算法的C语言实现 --- WIN32版本 .
一个UUID生成算法的C语言实现——WIN32版本 cheungmine 2007-9-16 根据定义,UUID(Universally Unique IDentifier,也称GUID)在时 ...
- 获取设备的UUID
很多时候需要获取设备的UUID,比如在蓝牙交互时,需要获取服务和特征的UUID,那么如何获取设备的UUID呢?请见如下代码: // // ViewController.m // 获取UUID // / ...
- boost uuid
uuid: uuid库是一个小的使用工具,可以表示和生成UUID UUID是University Unique Identifier的缩写,它是一个128位的数字(16字节),不需要有一个中央认证机构 ...
- Python——uuid
uuid模块在Python 2.5以后引入,接口包括:不可变对象UUID(UUID类)和函数uuid1().uuid3().uuid4()和uuid5(),后面的四个函数用于生成 RFC 4122 规 ...
随机推荐
- 折腾 Quickwit,Rust 编写的分布式搜索引擎-官方教程
快速上手 在本快速入门指南中,我们将安装 Quickwit,创建一个索引,添加文档,最后执行搜索查询.本指南中使用的所有 Quickwit 命令都在 CLI 参考文档 中进行了记录. https:// ...
- 使用 AWS CLI 管理 S3
S3 是 AWS 的对象存储服务 S3: Simple Storage Service 创建桶 使用 aws s3 mb 命令创建新的 S3 桶.您需要提供一个全球唯一的桶名称和创建桶的区域. aws ...
- 倾斜摄影osgb格式文件,进行坐标转换
倾斜摄影OSGB格式的文件,很棘手,今天需要把osgb放到UE中渲染.碰到的问题如下: 1.osgb文件导进去后,Z轴不想上,是歪的,小人放进去后,就斜站在马路上. 2.根本原因是坐标系,UE的插件c ...
- 图解Zabbix设置邮件报警
Zabbix设置邮件告警 前提条件: Zabbix Server 和 Zabbix Agent都已安装完毕,并已启动 1.添加主机 2.配置邮件告警,这里以VSFTP服务为例 yum in ...
- [postgres]使用pgbench进行基准测试
前言 pgbench是一种在postgres上进行基准测试的简单程序,一般安装后就会自带.pgbench可以再并发的数据库绘画中一遍遍地进行相同序列的SQL语句,并且计算平均事务率. 测试准备 既然要 ...
- 【YashanDB数据库】YAS-02079 archive log mode must be enabled when database is in replication mode
[标题]错误码处理 [问题分类]调整归档 [关键字]关闭归档.YAS-02079.replication mode [问题描述]执行alter database noarchivelog 关闭归档时, ...
- Figma 学习笔记 – Plugin
安装 Figma 安装 plugin 基本上就是点击一下开启而已. 到社区搜索 -> 点击 install Material Icon 下载地址 它的交互不是 drag 出来哦, 而是点击 ic ...
- 面试官的几句话,差点让我挂在HTTPS上
作为软件测试,大家都知道一些常用的网络协议是我们必须要了解和掌握的,比如 HTTP 协议,HTTPS 协议就是两个使用非常广泛的协议,所以也是面试官问的面试的时候问的比较多的两个协议:而且因为这两个协 ...
- Serilog文档翻译系列(五) - 编写日志事件
日志事件通过 Log 静态类或 ILogger 接口上的方法写入接收器.下面的示例将使用 Log 以便语法简洁,但下面显示的方法同样可用于接口. Log.Warning("Disk quot ...
- Flutter将视频或图文分享到抖音
如何在 Flutter 中分享视频到抖音 话不多说,先上效果: 原理 发布内容至抖音 H5 场景_移动/网站应用_抖音开放平台 (open-douyin.com) 本教程没有接入抖音原生 SDK 以及 ...