PHP生成UUID
简介UUID含义是 通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。 我们如何使用PHP来生成UUID呢?
关于UUID的起源和作用这里我就不再赘述了,不知道的可以执行百度。这里我们需要知道标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx (8-4-4-4-12)。
我为什么会使用UUID呢?为了给上传的图片进行命名。可能会有人会说这不是给自己找麻烦嘛,命名可以使用时间戳再加上些随机数不是更快更好?这里希望大家不要反驳我,我也就是为了使用UUID这个功能。那么PHP生成UUID的方式有很多种,下面我主要列举两种:
第一种:直接使用PHP代码进行生成
function create_uuid($prefix = ""){ //可以指定前缀
$str = md5(uniqid(mt_rand(), true));
$uuid = substr($str,0,8) . '-';
$uuid .= substr($str,8,4) . '-';
$uuid .= substr($str,12,4) . '-';
$uuid .= substr($str,16,4) . '-';
$uuid .= substr($str,20,12);
return $prefix . $uuid;
}
echo create_uuid();
这种也是我最开始使用功能UUID的方式,使用相当方便,直接放在代码中进行使用。我这里使用功能TP框架,所以放在公共函数库里面可以直接进行调用。但是这个功能太过于单一,在网上百度了下,PHP提供了一个UUID的扩展,地址:https://pecl.php.net/package/uuid,感兴趣的童鞋可以跟我一样去动手安装下。下面我们就说说该扩展,也希望后期的项目可以直接使用该方式来创建UUID。
第二种、使用PHP的UUID扩展
首先它作为PHP的扩展,默认情况下该扩展是没有安装的。就需要大家进行安装,下面的安装方式不能适用于所有人,我使用的是Homestead,所以安装的方式直接是:
sudo apt-get install php7.2-uuid
安装完成后,重启下服务
sudo service php7.2-fpm restart
使用phpinfo()就可以看到uuid的扩展已经安装完成。
如果我们要生成一个UUID,调用的方式也很简单:
<?php
echo uuid_create();
#结果为【刷新一次变动一次,所不要与我的结果进行对比】:2599e248-0459-4522-850f-f875913ef807
使用是不是很方便,其实该扩展还提供了其他的一些函数。下面列举下:
- uuid_compare:对比UUID
- uuid_create:生成UUID,可以指定类型,如UUID_TYPE_RANDOM、UUID_TYPE_TIME
- uuid_is_null:验证UUID是否为空,空UUID就是00000000-0000-0000-0000-000000000000
- uuid_is_valid:验证是否是UUID
- uuid_mac:-(这个还没有搞清楚)
- uuid_parse:将数字的UUID以两位的形式转换成字母的形式
- uuid_time:验证UUID是否是以时间来生成的
- uuid_type:验证UUID的类型
- uuid_unparse:作用与uuid_parse刚好相反
- uuid_variant:-(这个也不太清楚)
以上的使用方式可以参考UUID的文档。一些函数的说明我这里也不太准确和详细,后期再进行补充。
总结:生成UUID的方式比较多,上面只是列举了我现在用到了两种方式,比较推荐第二种方式,只是稍显的有些麻烦,但是功能确实很强大,可以省去自己写很多验证方法。
报错Electron failed to install correctly, please delete node_modules/electron and try installing again处理
Mysql in 多个字段的用法
nodejs中使用npm和yarn,使用最新阿里云镜像 aliyun mirror,网上很多还是文章用的是下面这个地址~~yarn config set registry https://registry.npm.taobao.org~~
Portainer是一款轻量级的图形化管理工具,通过它我们可以轻松管理不同的docker环境。Portainer部署和使用都非常的简单,它由一个可以运行在任何docker引擎上的容器组成。Portainer提供管理docker的containers、images、volumes、networks等等。它兼容独立的docker环境和swarm集群模式。基本满足中小型单位对docker容器的管理工作。
在公司内部多项目并行的时候,每次开启要给项目就需要申请一个域名,并且每个域名就需要支持HTTPS,所以前面我们已经用过Certbot生成证书,那么本文我们主要记录Certbot生成泛域名证书。
快速生成表格
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。