Zum Hauptinhalt springen
Version: 1.x

← Zurück · Zurück zur README · Weiter →

Speicherort

Standardmäßig werden Feeds im Speicher public abgelegt. Der Dateiname wird automatisch aus dem Namen der Feed-Klasse nach App\Feeds\ im Format kebab-case erzeugt. Beispiel:

# App\Feeds\UserFeed
user.xml

# App\Feeds\Sitemaps\ProductFeed
sitemaps-product.xml

Sie können diese Werte ändern, indem Sie die Eigenschaft $storage und die Methode filename überschreiben:

use DragonCode\LaravelFeed\Feeds\Feed;

class UserFeed extends Feed
{
protected string $storage = 's3';

public function filename(): string
{
return 'some/path/will/be/here.xml';
}
}

Unterstützte Datenträger​

Die Feed-Generierung unterstützt Laravel-Datenträger, die zu Illuminate\Filesystem\FilesystemAdapter aufgelöst werden. Dazu gehören die Treiber local, s3, sftp und ftp, wenn ihre Flysystem-Adapter installiert und konfiguriert sind. Benutzerdefinierte Adapter werden unterstützt, wenn sie beschreibbare Streams, Dateiverschiebungen, Verzeichnisverwaltung und -auflistung sowie Löschvorgänge über Flysystem bereitstellen.

Warnung

Schreibgeschützte Datenträger und benutzerdefinierte Datenträger, die nur Illuminate\Contracts\Filesystem\Filesystem implementieren, werden nicht unterstützt. Ein benutzerdefinierter Datenträger, der nicht zu Illuminate\Filesystem\FilesystemAdapter aufgelöst wird, schlägt vor dem Start der Datenbankabfrage des Feeds mit UnsupportedStorageDiskException fehl. Ein schreibgeschützter Laravel-Datenträger wird weiterhin zu FilesystemAdapter aufgelöst; daher werden die Feed-Abfrage und das lokale Staging abgeschlossen, bevor der Schreibvorgang bei der Veröffentlichung fehlschlägt. GeneratorService schließt diesen Speicherfehler in FeedGenerationException ein.

Pfadvertrag​

  • storage() gibt den konfigurierten FilesystemAdapter zurück.
  • storagePath() gibt den datenträgerrelativen Pfad für Speichervorgänge zurück, einschließlich eines optionalen Suffixes für aufgeteilte Dateien.
  • path() gibt den vom Laravel-Adapter aufgelösten Pfad zurück. Bei einem lokalen Datenträger ist dies ein absoluter Dateisystempfad, bei einem entfernten Datenträger ein vom Adapter aufgelöster Pfad.

Veröffentlichungsgarantien​

Jeder Feed-Teil wird vollständig fertiggestellt, bevor die Veröffentlichung beginnt. Lokale Datenträger veröffentlichen bereitgestellte Dateien durch Dateisystemverschiebungen unter einer exklusiven Anwendungssperre. Schlägt eine Verschiebung fehl, versucht Laravel Feeds, jede vorherige Datei aus ihrer Staging-Sicherung wiederherzustellen.

Entfernte Datenträger erhalten vollständige Staging-Dateien über Flysystem-Streams, bevor veröffentlichte Objekte geändert werden. Anschließend verschiebt die Veröffentlichung jedes Staging-Objekt an seinen Zielort und versucht bei einem Fehler dieselbe Wiederherstellung.

Warnung

Entfernte Verschiebungen können als Kopier- und Löschvorgänge umgesetzt werden und eventuell konsistent sein. Daher ist der atomare Austausch eines einzelnen Objekts oder eines vollständig aufgeteilten Feeds nicht garantiert. Die Veröffentlichungssperre gilt nur lokal auf dem Anwendungshost. Generatoren auf verschiedenen Hosts benötigen eine externe verteilte Sperre, wenn sie denselben Feed gleichzeitig veröffentlichen können.

Siehe auch​