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 规 ...
随机推荐
- pyinstall通过配置.spec文件引用资源文件
pyinstall通过配置.spec文件引用资源文件 pyinstall可以自动将所有依赖的.py文件连接起来编译成一个可执行exe文件,但是如果在程序中 使用了外部资源,如图片,或者是其它的配置文件 ...
- 如何使用 Shebang
什么是 Shebang? 简单来说,就是你在脚本开头看到的这个: #!/usr/bin/bash Shebang(也称为 hash-bang.pound-bang 或者 bang)是一个作为脚本文件中 ...
- 【VMware VCF】VCF 5.2:配置管理域 vSAN 延伸集群。
VMware vSAN 解决方案中,根据集群的配置类型分为 vSAN 标准集群.vSAN 延伸集群以及双主机集群(延伸集群特例).我们最常见的使用方式应该是 vSAN 标准集群,也就是 vSAN HC ...
- webpack 5.88.2
原理 webpack的运行过程大致可以分为以下几个步骤:webpack的运行过程实际上就是等待上一个钩子结束调用下一个钩子的过程 初始化:webpack接收命令行参数或配置文件,创建一个Compile ...
- Tomcat——基本使用(下载、安装、卸载、启动、关闭)
Tomcat--基本使用 1.下载安装(8.5版本为企业最常用版本) 下载地址:https://tomcat.apache.org/download-80.cgi (官网 ...
- QT6跨平台开发
QT6跨平台开发 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C++扩展开发视频课程 免费QT视频课程 您可以看免费1000+个QT技术 ...
- RTThread内对##连接符和#转字符串这俩符号的使用
早就知道这俩符号的意思,最近翻看代码又看到了,仍然觉得熟悉又陌生,主要是自己平时写代码对这俩符号用的比较少.于是特地做个实验,加深下理解.可记的东西不多,这篇随笔算是随手一写吧. 上实验代码: 来源: ...
- [namespace hdk] modint
template<long long mod=INT_MAX,typename T0=long long> class modint{ private: T0 x; long long p ...
- 信创环境经典版SuerMap iManager启动崩溃
一.问题环境 操作系统:银河麒麟kylin V10 CPU:鲲鹏920 SuperMap iManager 10.2.1 硬件:16H64G机器 二.现象 磁盘和内存都有空闲,首次启动SuperMap ...
- Git常用命令,分支合并与管理
Git 自我感觉最大的优点是对版本库和分支的管理 各自的电脑都对项目保存一份版本,分支合并也极其方便. 而且Git的目录操作命令跟Linux一样,使用起来还是非常顺手的. Git详解 Git 常用命令 ...