У меня есть сборка системы кэширования в php, которая хранит результаты запроса mysql в xml. Я блокирую кеш при сборке, создав файл блокировки с эксклюзивным дескриптором записи, а затем удаляю его, как только файл кеша завершен.
Однако бывают случаи, когда сценарий либо останавливается, либо останавливает промежуточное выполнение, оставляя файл блокировки на месте, заставляя любые дальнейшие выполнения сценария думать, что кэш всегда обновляется.
Я попытался проверить наличие файла в течение нескольких минут и попытаться получить эксклюзивный доступ на запись в файл, чтобы обновить блокировку и начать выполнение, однако, похоже, файл все еще открыт с предыдущим дескриптором не удается открыть новый дескриптор, чтобы гарантировать, что текущий процесс является единственным, имеющим доступ и заблокировать файл.
Есть ли способ гарантировать, что если сценарий будет остановлен во время выполнения, все дескрипторы открытых файлов будут закрыты, а соответствующие файлы доступны для доступа будущих процессов?
Спасибо