← Папярэдняя · Назад да README · Наступная →
Размяшчэнне
Стандартна стужкі захоўваюцца ў сховішчы public, а імя файла аўтаматычна фарміруецца з часткі імя класа стужкі пасля App\Feeds\ у фармаце kebab-case. Напрыклад:
# App\Feeds\UserFeed
user.xml
# App\Feeds\Sitemaps\ProductFeed
sitemaps-product.xml
Гэтыя значэнні можна змяніць, перавызначыўшы ўласцівасць $storage і метад filename:
use DragonCode\LaravelFeed\Feeds\Feed;
class UserFeed extends Feed
{
protected string $storage = 's3';
public function filename(): string
{
return 'some/path/will/be/here.xml';
}
}
Падтрыманыя дыскі
Генерацыя стужак падтрымлівае дыскі Laravel, якія пераўтвараюцца ў Illuminate\Filesystem\FilesystemAdapter. Да іх адносяцца драйверы local, s3, sftp і ftp, калі адпаведныя адаптары Flysystem усталяваны і наладжаны. Карыстальніцкія адаптары падтрымліваюцца, калі яны праз Flysystem забяспечваюць патокі для запісу, перамяшчэнне файлаў, кіраванне каталогамі і іх спісамі, а таксама выдаленне.
Дыскі толькі для чытання і карыстальніцкія дыскі, якія рэалізуюць толькі Illuminate\Contracts\Filesystem\Filesystem, не падтрымліваюцца. Карыстальніцкі дыск, які не пераўтвараецца ў Illuminate\Filesystem\FilesystemAdapter, прывядзе да UnsupportedStorageDiskException яшчэ да пачатку запыту стужкі да базы даных. Дыск Laravel толькі для чытання ўсё роўна пераўтвараецца ў FilesystemAdapter, таму запыт стужкі і лакальная падрыхтоўка завяршаюцца да таго, як аперацыя запісу пры публікацыі завершыцца памылкай. GeneratorService абгортвае гэтую памылку сховішча ў FeedGenerationException.
Кантракт шляхоў
storage()вяртае наладжаныFilesystemAdapter.storagePath()вяртае шлях адносна дыска, які выкарыстоўваецца ў аперацыях са сховішчам, у тым ліку неабавязковы суфікс падзеленага файла.path()вяртае шлях, вызначаны адаптарам Laravel. Для лакальнага дыска гэта абсалютны шлях файлавай сістэмы, для аддаленага — шлях, вызначаны адаптарам.
Гарантыі публікацыі
Кожная частка стужкі цалкам завяршаецца да пачатку публікацыі. На лакальных дысках падрыхтаваныя файлы публікуюцца праз перамяшчэнне ў файлавай сістэме пад эксклюзіўнай блакіроўкай праграмы. Калі перамяшчэнне не ўдаецца, Laravel Feeds спрабуе аднавіць кожны папярэдні файл з яго падрыхтаванай рэзервовай копіі.
Аддаленыя дыскі атрымліваюць цалкам падрыхтаваныя файлы праз патокі Flysystem да змены апублікаваных аб'ектаў. Затым кожны падрыхтаваны аб'ект перамяшчаецца на месца. Пры памылцы выконваецца такая ж спроба адкату.
Аддаленае перамяшчэнне можа быць рэалізавана як капіяванне з наступным выдаленнем і можа мець узгодненасць з затрымкай. Таму атамарная замена аднаго аб'екта або ўсёй падзеленай стужкі не гарантуецца. Блакіроўка публікацыі дзейнічае толькі на вузле праграмы. Калі генератары на розных вузлах могуць адначасова публікаваць адну стужку, патрэбна знешняя размеркаваная блакіроўка.