FileActionsPHP

0

Описание

Инкапсуляция эксклюзивной и общей блокировки файла при чтении/записи из нескольких потоков или процессов

Языки

  • PHP100%
readme.md

Класс для работы с файлом

Обычный класс для работы с файлом, который реализует методы чтения, записи и блокировки.

Блокировки обеспечивает безопасный доступ к файлу из разных процессов.

Концепция:

  • При создании экземпляра класса в нем сохраняется открытый дескриптор на все время жизни класса.
  • Один экземпляр класса - один файл. Каждый экземпляр открывает новый дескриптор.
  • Простые и потокобезопасные чтение и запись.
  • Изменение прав доступа и владельцев.
  • Если операция с файлом невозможна - выбрасываются исключения.
    • Ошибки не очищаются самостоятельно, для этого есь метод error_clear().
  • Если файл отсутвует, то создается новый.
  • Если для указанного пути не существуют папок, будет попытка их создать. В этом случае все существующие каталоги иерархии должны иметь право на выполнение. Либо создавайте их заранее чтобы избежать ошибок создания файла в несуществующих директориях.

App/File/RandomFile.php

Создает в указанной директории уникальный файл добавляя к имени рандомные символы. Полностью исключает вероятность совпадения рандомных символов при создании файлов в разных процессах.

Каждый экземпляр создается только при получении эксклюзивной блокировки на lock файл. Это значит другие процессы выстроятся в очередь при создании рандомного файла и каждый будет эксклюзивно проверять уникальность имени.

App/File/SimpleFile.php

Создает или открывает указанный файл.