我想要将长SQL命令转换为唯一的文件名,以便进行缓存练习。我目前使用的是每个SQL命令的md5()
,但不确定它们是否是唯一的。
md5($sql)
会导致每个SQL语句的文件名是唯一的吗?
对于同一个md5
语句,这些SQL字符串是否总是相同的?它们必须是为我准备的。
非常感谢!
发布于 2011-04-08 16:22:41
对于唯一的输入字符串,md5将是唯一的(除非在极少发生冲突的情况下)-所以您正在做正确的事情。SHA1将会更好。
发布于 2011-04-08 16:23:54
它将是相当独特的,永远不会成为问题。这就是MD5的全部意义所在,为唯一的输入创建唯一的散列。尽管MD5并不完美,但意外发现冲突的可能性很低,以至于在所有实际意图和目的上都是不存在的。而且由于MD5非常快,所以它是一个很好的选择。
发布于 2011-04-08 16:24:04
好吧,这一切都取决于声明是什么。如果你曾经有过相同的两个语句,那么它们就不是唯一的。
但是,您可以将当前日期或时间附加到字符串中,例如:
$newsql = $sql.date('Y-m-d H:m:s');
md5($newsql);
您还可以使用strtotime()
函数来生成一个仅数字的时间戳。
或者,您可以在SQL中附加NOW()
MySQL命令,假设您返回的是数据,那么它将是唯一的,最后有一个时间。
不确定为什么要从语句生成文件?
编辑
我很抱歉,发帖者希望它们是独一无二的,上面的内容将确保它们不是独一无二的。
https://stackoverflow.com/questions/5592371
复制相似问题