unlink / file_exists и файл не найден - PullRequest
6 голосов
/ 05 апреля 2011

У меня есть этот код в моем приложении, часто запускаемый в состоянии гонки несколькими пользователями моего приложения

clearstatcache(TRUE, $filepath);
if(file_exists($filepath)) unlink($filepath);

Но для этой строки кода у меня все еще есть несколько ошибок каждый день, например

unlink (file): нет такого файла или каталога

Сервер работает под управлением Apache 2.2 и PHP 5.3.3.Я знаю проблемы с гонками, но думаю, что оператор @ - это просто зло.Сначала я попытался без каких-либо параметров для clearstatcache (), с той же ошибкой.Как я могу сделать это правильно?

Ответы [ 2 ]

6 голосов
/ 05 апреля 2011

Вы можете попробовать это

if(@unlink($path)) {
  echo "Deleted file "; 
}
else{
  echo "File can't be deleted";
}

Я думаю, что это будет довольно хорошо;

5 голосов
/ 05 апреля 2011

Как сказано в комментарии, мне нужно убедиться, что я удалил файл, а не знать, каким образом его удалить, поэтому

@unlink($filepath);
clearstatcache(TRUE, $filepath);
if(file_exists($filepath)) throw new Exception('file not deleted : ' . $filepath);

может быть лучше.

Большое спасибо за вашу помощь, гораздо проще придумать другой способ сделать это с несколькими комментариями.

...