首页 > 解决方案 > PHP 使用 mkdir 同时创建两个同名目录

问题描述

请看下面的代码

 $directory_name = "directory_no"; 
 for($i=2; file_exists($directory_name); $i++){
   $directory_name =  "directory_no".$i;
 }
 mkdir(directory_name, 0755, true);

我有一个网页,当用户单击按钮时,会在同一父文件夹(在服务器上)中创建一个唯一目录,

正如你在上面的代码中看到的那样,PHP 检查同名目录是否已经存在。如果是,它会不断增加目录名称末尾的数字,因此如果名称为“directory_no”的目录已经存在。它将检查名称为“directory_no2”的目录,如果“directory_no2”也存在,它将检查“directory_no3”等等......直到找到一个不存在的目录名称。

现在请假设,前两个用户同时单击该按钮,同时 PHP 检查名称为“directory_no”的目录是否存在(当时两个用户都不存在该目录)并且 PHP 尝试同时创建目录,会发生什么?我认为这会引发错误。

所以我的问题是

使用上面的代码,是否还有可能两个用户的目录相互冲突?

谢谢!

标签: phpdirectorymkdir

解决方案


推荐阅读