Reputation: 3420
I have this code in my application, often run in race condition by severals users of my application
clearstatcache(TRUE, $filepath);
if(file_exists($filepath)) unlink($filepath);
But, for this line of code, I still have severals errors each day like
unlink(file): No such file or directory
Server run Apache 2.2 and PHP 5.3.3. I know race problem, but think @ operator is just evil. I have first tried without any parameter for clearstatcache(), with the same error. How can I do it the correct way?
Upvotes: 7
Views: 7124
Reputation: 3420
As said in comment, my need is to be sure I have deleted the file, not to know witch process delete it, so
@unlink($filepath);
clearstatcache(TRUE, $filepath);
if(file_exists($filepath)) throw new Exception('file not deleted : ' . $filepath);
may be a better way.
Thanks a lot for your help, it's so much easier to think another way to do it with severals comments.
Upvotes: 5
Reputation: 21439
you can try this
if(@unlink($path)) {
echo "Deleted file ";
}
else{
echo "File can't be deleted";
}
I think it will be pretty fine;
Upvotes: 6