Цикл Do While - создание имени файла и проверка существования файла - PullRequest
3 голосов
/ 02 марта 2011

Мне нужно иметь возможность сделать цикл while, который генерирует имя файла и проверяет, не существует ли он в каталоге, затем следует продолжить со сценарием, например,

do {
      $filename = random(18) . $fileEx;
} while(!file_exists($filename));

$move_file = move_uploaded_file($request_file['tmp_name'][$i], 'files/' . $filename);

if($move_file)
{
   // ...

Но когда я делаю это, он просто заходит в бесконечный цикл - при использовании E_ALL.

не выдается никаких ошибок.

Ответы [ 2 ]

10 голосов
/ 02 марта 2011

Вы должны запускать цикл до тех пор, пока файл существует, а не до тех пор, пока он не существует (что будет всегда, если у вас есть уникальное имя файла).Измените его на

} while(file_exists($filename));
1 голос
/ 02 марта 2011

Это неправильный способ сделать это. Вы должны использовать функцию, которая гарантирует, что вы создаете файлы атомарным способом.

php имеет tempnam

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...