Удалить (отменить) или создать (fwrite) файл с помощью PHP, когда файл используется
Я работаю на сайте с системой LAMP.
Содержимое поступает из базы данных.
В целях кэширования я создаю файлы на своем веб-сервере (содержащие кэшируемое содержимое) (через fwrite()
).
Время от времени я удаляю файлы кеша (через unlink()
).
Создание и удаление файла осуществляется с помощью cronjob.
Мой вопрос: что происходит, когда посетитель моего веб-сайта в настоящее время просматривает (= запрашивает у веб-сервера) файл A.php, и я пытаюсь записать или удалить этот же файл A.php.
Чтобы быть точным: что произойдет, если мой cronjob выдаст unlink()
команда и одновременно передает файл пользователю.
Будет ли это создавать условия гонки?
Я знаю, как получить статус из операций unlink и fwrite, так что я мог бы просто зациклить свой unlink/fwrite до тех пор, пока эти функции возвращают false (не могут быть удалены / записаны)?
Ждем ваших мнений / ответов!
1 ответ
Да, это, очевидно, создаст условия гонки. Запрос файла с веб-сервера и удаление из задания cron являются независимыми процессами, и у вас нет возможности узнать, что-то делает один или другой с файлом.