我相信这个问题已经被问了上千次了,所以这是我的版本…
我使用以下函数来生成我的unid id:
function generateUnid($key) {
$name = $_FILES[$key]['name']; //get image name from global variable $_FILES
$ext = pathinfo($name, PATHINFO_EXTENSION); //get image extension
$prefix = 'fc'; //prefix for unid
do {
$unid = uniqid($prefix, true); //generate a unid
$filename = $unid . '.' . $ext; //replace image name with unid
$path = PATH_UPLOAD_ARTWORK . $filename; // image path
} while (file_exists($path)); // check if the image name exists
return $filename;
}返回值示例如下:
fc4e7801523a04e6.06876802.jpg到目前一切尚好。现在,我想为我的图像创建某种目录结构。类似的内容如下:
0
0
1
2
fc4e7801523a04e6.06876802.jpg
...
3
...
1
0
1
2
3
...
2
0
1
...我可能会在我唯一的id中获得最后两个整数,以便将图像归档到正确的目录中。但是,我不确定这是不是正确的策略。如何确保图像均匀地归档在文件夹中。我不想在一个包含12000张图片的文件夹和一个包含1500张图片的文件夹中找到自己……
我提取uniq的最后两个数字,这样做正确吗?有没有更好的方法来均匀地归档图像?
谢谢
发布于 2012-03-25 12:31:47
假设唯一的id是一致的(伪随机的),我认为它是随机的,我认为这个策略会工作得很好。不可避免地会有一些文件夹比normal distribution预测的平均值多得多或少得多。
一个稍微好一点的技术是使用uid中的许多数字的模数(%),而不是最后两个数字,以防您选择的数字具有某种模式。
我的建议是试一试,看看它是如何为你工作的。
https://stackoverflow.com/questions/9857914
复制相似问题