unlink関数を使ってファイルを削除する場合、プラットフォームにもよると思うけど、関数を呼び出してから実際にファイルが削除されるまでにタイムラグがある。確実にファイルが削除されてから以降の処理を行いたい場合には、ファイルが削除されるまで待つ必要がある。
というわけで、以下のようなコードを書いてみたので覚え書き。
1 2 3 4 5 6 7 8 9 |
function deleteFile($path) { if (file_exists($path)) { unlink($path); //ファイルが削除されるまで待つ while (file_exists($path)) { usleep(500000); //0.5秒待つ } } } |
もし、何らかの不具合によりファイルが削除されないと無限ループに陥るので、ウォッチドッグタイマー的に最長の待ち時間を制限しておくべきだろう。