FileActionsPHP
Описание
Инкапсуляция эксклюзивной и общей блокировки файла при чтении/записи из нескольких потоков или процессов
Языки
- PHP100%
readme.md
Класс для работы с файлом
Обычный класс для работы с файлом, который реализует методы чтения, записи и блокировки.
Блокировки обеспечивает безопасный доступ к файлу из разных процессов.
Концепция:
- При создании экземпляра класса в нем сохраняется открытый дескриптор на все время жизни класса.
- Один экземпляр класса - один файл. Каждый экземпляр открывает новый дескриптор.
- Простые и потокобезопасные чтение и запись.
- Изменение прав доступа и владельцев.
- Если операция с файлом невозможна - выбрасываются исключения.
- Ошибки не очищаются самостоятельно, для этого есь метод error_clear().
- Если файл отсутвует, то создается новый.
- Если для указанного пути не существуют папок, будет попытка их создать. В этом случае все существующие каталоги иерархии должны иметь право на выполнение. Либо создавайте их заранее чтобы избежать ошибок создания файла в несуществующих директориях.
App/File/RandomFile.php
Создает в указанной директории уникальный файл добавляя к имени рандомные символы. Полностью исключает вероятность совпадения рандомных символов при создании файлов в разных процессах.
Каждый экземпляр создается только при получении эксклюзивной блокировки на lock файл. Это значит другие процессы выстроятся в очередь при создании рандомного файла и каждый будет эксклюзивно проверять уникальность имени.
App/File/SimpleFile.php
Создает или открывает указанный файл.