如果我使用此代码创建随机文件夹名称,则可以检查此文件夹名称是否已存在,但是如何再次运行此文件夹名称,请创建一个新的文件夹名称并再次检查,依此类推
function createRandomFoldername()
{
$chars = "abcdefghijkmnopqrstuvwxyzABCDEFGHIJKMNOPQRSTUVWXYZ1023456789";
srand((double)microtime()*1000000);
$i = 0;
$folder = '' ;
while ($i <= 10)
{
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$folder = $folder . $tmp;
$i++;
}
return $folder;
}
$folder_random = createRandomFoldername();
答案 0 :(得分:0)
鉴于您的随机函数,您可以使用do while循环来实现此目的
do{
$folder_random = createRandomFoldername();//generate once
}while(is_dir($folder_random));//check if already exists
如果文件夹不存在,循环将自动停止。
答案 1 :(得分:0)
如果您担心比赛条件,可以尝试以下方法:
!is_dir($folder) && !mkdir($folder) && !is_dir($folder)
此代码摘自Probable bugs文档的Php Inspections (EA Extended)。
'mkdir(...)'比赛条件
此问题很难重现,因为与并发相关 问题是。尝试创建多个进程时显示 一个尚不存在的目录。具体来说,当一个过程 在另一个进程已经完成之后,位于
is_dir()
和mkdir()
之间 设法创建了目录。
循环直到完成。