代码之家  ›  专栏  ›  技术社区  ›  Muiter

当生成的foldername已经存在时,重新创建foldername

php
  •  0
  • Muiter  · 技术社区  · 6 年前

    如果我使用这段代码创建一个随机的foldername,我可以检查这个foldername是否已经存在,但是如何再次运行它创建一个新的foldername并再次检查它,依此类推

    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();
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Álvaro González    6 年前

    如果您关心的是赛况,您可以尝试以下方法:

    !is_dir($folder) && !mkdir($folder) && !is_dir($folder)
    

    此代码取自 Probable bugs 文件 Php Inspections (EA Extended)

    'mkdir(…)'竞赛条件

    这个问题很难重现,因为任何并发都是相关的 问题是。当多个进程试图创建 is_dir() mkdir() 在另一个进程已经完成之后 已成功创建目录。

        2
  •  0
  •   Elementary    6 年前

    给定您的随机函数,您可以使用do while循环来实现这一点

    do{ 
        $folder_random = createRandomFoldername();//generate once
    }while(is_dir($folder_random));//check if already exists
    

    如果文件夹不存在,循环将自动停止。