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