php生成唯一id的几种解决方法
2023-06-13 09:14:47 时间
网上查了下,有很多的方法
1、md5(time().mt_rand(1,1000000));
这种方法有一定的概率会出现重复
2、php内置函数uniqid()
uniqid()函数基于以微秒计的当前时间,生成一个唯一的ID.
w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的ID不是最佳的。如需生成绝对唯一的ID,请使用md5()函数"。
下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872
functionuuid(){ if(function_exists("com_create_guid")){ returncom_create_guid(); }else{ mt_srand((double)microtime()*10000);//optionalforphp4.2.0andup.随便数播种,4.2.0以后不需要了。 $charid=strtoupper(md5(uniqid(rand(),true)));//根据当前时间(微秒计)生成唯一id. $hyphen=chr(45);//"-" $uuid="".//chr(123)//"{" substr($charid,0,8).$hyphen.substr($charid,8,4).$hyphen.substr($charid,12,4).$hyphen.substr($charid,16,4).$hyphen.substr($charid,20,12); //.chr(125);//"}" return$uuid; } }
com_create_guid()是php自带的生成唯一id方法,php5之后貌似已经没有了。
3、官方uniqid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}
publicfunctioncreate_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点击一次 刷新两次,easyui window refresh 刷新两次的解决方法(推荐)
- PHP和MySQL:构建动态网站的利器(php与mysql)
- MySQL数据库操作:用PHP实现(php操作mysql数据库)
- Linux更新:升级PHP版本(linux更新php版本)
- 测试MySQL触发器构建:PHP测试实例(mysql触发器php)
- 版本实现Linux安装多个PHP版本的方法(linux安装多个php)
- php.ini 添加的模块没更新的解决方法详解编程语言
- php debug_backtrace方法跟踪代码调用详解编程语言
- 从MySQL到PHP:展示表格数据(php显示mysql表)
- 解决方案PHP 解决 MySQL 乱码问题的好办法(mysql乱码php)
- PHP实现Redis监控的简便方法(php监控redis)
- PHP和MSSQL实现完美兼容:简单实用又稳定(php mssql兼容性)
- 记录PHP之MySQL踩坑:如何防止重复记录(php mysql 重复)
- PHP内存缓存加速功能memcached安装与用法
- php表单转换textarea换行符的方法
- php中关于普通表单多文件上传的处理方法
- PHP中usort在值相同时改变原始位置问题的解决方法
- phpMyAdmin出现无法载入mcrypt扩展,请检查PHP配置的解决方法
- php教程之魔术方法的使用示例(php魔术函数)
- php中cookie的使用方法
- php环境无法上传文件的解决方法
- 简单的php新闻发布系统教程
- PHP中的多行字符串传递给JavaScript的两种方法
- php通过session防url攻击方法
- php防止伪造的数据从URL提交方法
- php使用pdo连接报错ConnectionfailedSQLSTATE的解决方法
- php+mysql删除指定编号员工信息的方法
- PHP提示Cannotmodifyheaderinformation-headersalreadysentby解决方法
- Windows下PHP安装路径配置错误导致Apache无法启动的解决方法