Zum Hauptinhalt springen

Fehlerbehebung

Beginnen Sie an der ersten fehlerhaften Grenze: Registrierung, Abfrage, Konvertierung, Speicher oder Auslieferung. Bewahren Sie die ursprüngliche Ausnahme auf, da sie die Feed-Klasse und den Ausgabekontext enthält.

Feed-Klasse wurde nicht gefunden

Prüfen Sie, ob die Registrierung den vollständigen Klassennamen enthält, Composer-Autoloading ihn auflösen kann und die Klasse DragonCode\LaravelFeed\Feeds\Feed oder eine Voreinstellung erweitert. Führen Sie nach dem Verschieben einer Klasse composer dump-autoload aus.

Generierung benötigt zu viel Arbeitsspeicher

  • Geben Sie einen Eloquent-Builder aus builder() zurück.
  • Rufen Sie nicht get(), all() oder toArray() für den vollständigen Datensatz auf.
  • Verringern Sie chunkSize() und messen Sie erneut.
  • Teilen Sie große Ausgaben mit perFile() auf.
  • Verschieben Sie die Arbeit erst in eine asynchrone Queue, wenn der Feed selbst streamend bleibt.

Siehe Leistung.

Ein Queue-Job wird nie ausgeführt

Prüfen Sie FEED_QUEUE_CONNECTION, FEED_QUEUE_NAME und den Worker-Befehl. Die Verbindung sync wird sofort ausgeführt und prüft keine asynchrone Übermittlung. Eine Eindeutigkeitssperre kann einen weiteren Job für denselben Feed unterdrücken, bis FEED_QUEUE_UNIQUE_TTL abläuft.

Speicherdatenträger wird abgelehnt

Der Datenträger muss zu Illuminate\Filesystem\FilesystemAdapter aufgelöst werden und beschreibbare Streams, Verschiebungen, Verzeichnisverwaltung, Auflistungen und Löschvorgänge unterstützen. Eine benutzerdefinierte Implementierung, die kein FilesystemAdapter ist, schlägt vor der Datenbankabfrage mit UnsupportedStorageDiskException fehl. Ein schreibgeschützter Laravel-Datenträger besteht diese Typprüfung. Sein Schreibvorgang schlägt während der Veröffentlichung fehl, nachdem die Feed-Abfrage und das lokale Staging abgeschlossen wurden; GeneratorService schließt den Speicherfehler in FeedGenerationException ein.

XML-Generierung schlägt fehl

Validieren Sie über @mixed übergebenes Roh-XML, prüfen Sie CDATA-Inhalte und halten Sie Direktivenwerte innerhalb ihrer dokumentierten Skalar- oder Array-Verträge. Verwenden Sie normale maskierte Werte, sofern Roh-XML nicht erforderlich ist.

CSV-Zeilen schlagen nach dem ersten Element fehl

CSV legt seine Spalten anhand des Ausgabeschemas fest. Jedes Element muss dieselben Schlüssel liefern. Optionale Werte behalten eine leere Spalte, statt sie zu entfernen.

Veröffentlichte Dateien sind unvollständig oder veraltet

Prüfen Sie die ursprüngliche Speicherausnahme und die Berechtigungen des Datenträgers. Berücksichtigen Sie bei entfernten Datenträgern eventuelle Konsistenz und nicht atomare Kopier-und-Lösch-Verschiebungen. Generatoren auf mehreren Hosts benötigen eine externe verteilte Sperre, wenn sie dasselbe Ziel veröffentlichen können.

Während der Veröffentlichung erstellt Laravel Feeds neben dem Zielpfad ein temporäres Verzeichnis .feeds_staging_*. Nach einer erfolgreichen Veröffentlichung und nach gewöhnlichen Generierungsfehlern entfernt Laravel Feeds dieses Verzeichnis. Wenn das Rollback fehlschlägt, bleibt das Verzeichnis erhalten, damit seine Sicherungskopien verfügbar bleiben. Auch ein unterbrochener Prozess oder ein Fehler bei der Bereinigung kann ein solches Verzeichnis zurücklassen.

Eine große oder wachsende Anzahl von .feeds_staging_*-Verzeichnissen weist auf wiederholte Fehler bei der Veröffentlichung oder Bereinigung hin. Prüfen Sie die Generierungsprotokolle und die ursprüngliche Ausnahme, beheben Sie den zugrunde liegenden Speicher-, Berechtigungs- oder Prozessfehler und prüfen Sie alle aufbewahrten Sicherungskopien, bevor Sie veraltete Verzeichnisse manuell löschen.

Siehe auch