У меня есть система кэширования в php, которая хранит результаты запроса mysql в xml. Я блокирую кеш при создании, создавая файл блокировки с исключительным дескриптором записи, а затем удаляю его, как только файл кэша будет завершен.Как убедиться, что дескриптор файла закрыт, если скрипт php истекает?
Тем не менее, иногда сценарий прерывается или останавливается в середине исполнения, оставляя файл блокировки на месте, делая любые дальнейшие действия сценария, полагая, что кеш всегда обновляется.
Я пробовал проверять файл на несколько минут и пытаюсь получить эксклюзивный доступ для записи к файлу, чтобы обновить блокировку и начать выполнение, однако кажется, что файл по-прежнему открыт с предыдущим дескриптором и Я не могу открыть новый дескриптор, чтобы гарантировать, что текущий процесс является единственным с доступом и удалением файла.
Есть ли способ гарантировать, что если сценарий остановлен в середине выполнения, все открытые дескрипторы файлов закрываются, а файлы, доступные для доступа к будущим процессам, доступны?
Благодаря
Спасибо за ответ Эмиль, я обнаружил, что я использовал неправильный режим на моем fopen при проверке застрявших файлов блокировки, и он всегда возвращал false независимо от того, что еще я сделал. Я сейчас работаю, чтобы изменить это и убедиться, что любой результат, который я получаю, является правильным результатом, а не ложным результатом. Иногда выяснение актуальной проблемы сложнее, чем исправление, если вы знаете, что не так. – coffeecoder