Удалить (отменить) или создать (fwrite) файл с помощью PHP, когда файл используется

Я работаю на сайте с системой LAMP.

Содержимое поступает из базы данных.

В целях кэширования я создаю файлы на своем веб-сервере (содержащие кэшируемое содержимое) (через fwrite()).

Время от времени я удаляю файлы кеша (через unlink()).

Создание и удаление файла осуществляется с помощью cronjob.

Мой вопрос: что происходит, когда посетитель моего веб-сайта в настоящее время просматривает (= запрашивает у веб-сервера) файл A.php, и я пытаюсь записать или удалить этот же файл A.php.

Чтобы быть точным: что произойдет, если мой cronjob выдаст unlink() команда и одновременно передает файл пользователю.

Будет ли это создавать условия гонки?

Я знаю, как получить статус из операций unlink и fwrite, так что я мог бы просто зациклить свой unlink/fwrite до тех пор, пока эти функции возвращают false (не могут быть удалены / записаны)?

Ждем ваших мнений / ответов!

1 ответ

Решение

Да, это, очевидно, создаст условия гонки. Запрос файла с веб-сервера и удаление из задания cron являются независимыми процессами, и у вас нет возможности узнать, что-то делает один или другой с файлом.

Другие вопросы по тегам