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?
you can try this
if(@unlink($path)) {
echo "Deleted file ";
}
else{
echo "File can't be deleted";
}
I think it will be pretty fine;
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With