
Anleitungen im Zusammenhang mit Beach
Wie du Vips für schnelleres Rendern von Bildern nutzt
Konfiguriere Flow oder Neos so, dass libvips zum Rendern von Bildern und Miniaturansichten verwendet wird.
Übersicht
Deine Neos Website oder Flow-Anwendung verwendet normalerweise ImageMagick und GD, um kleinere Versionen deiner Fotos oder Vorschauen anderer Medieninhalte zu rendern. Diese Bibliotheken sind zwar sehr leistungsfähig, benötigen aber auch viel Speicherplatz für die Verarbeitung von Bildern. Es kann leicht passieren, dass eine Seite Neos mit vielen Vorschaubildern Hunderte von Megabytes an Arbeitsspeicher verbraucht, um die entsprechenden Bilddateien zu erstellen. Wenn die Originaldateien sehr groß sind oder du animierte GIFs verarbeiten musst, kannst du sogar Gigabytes an Arbeitsspeicher benötigen, nur um die Seite zu rendern.
Glücklicherweise stellt Beach libvips zur Verfügung, eine Low-Level-Codebibliothek, die fast das Gleiche kann wie ImageMagick, nur viel schneller und mit einem relativ geringen Speicherbedarf. Noch erfreulicher ist, dass Neos und Flow libvips über jcupitt/vips unterstützen, wenn man es nur ein wenig konfiguriert.
Wir empfehlen, dass du alle deine Flow- und Neos -Projekte so konfigurierst, dass sie Vips statt ImageMagick verwenden.
Bevor du beginnst
Wenn du Vips für dein Projekt aktivierst, brauchst du auch Vips-Unterstützung in deiner Entwicklungsumgebung.
Der Grund dafür ist, dass du in der Lage sein musst, composer update auszuführen . Das Paket, das Vips-Unterstützung bietet (rokka/imagine-vips) ist von der PHP-Erweiterung vips abhängig, und wenn du diese Erweiterung nicht aktiviert hast, meldet Composer, dass die Plattformanforderungen nicht erfüllt sind.
Die Lösung ist jedoch einfach: Installiere einfach PHP Vips für deine lokale Umgebung. Vergewissere dich jedoch, dass jeder in deinem Team, der Composer Update ausführt, auch Vips installiert hat.
Installation von PHP Vips für deine Entwicklungsumgebung
Für deine Entwicklungsumgebung musst du zwei Bibliotheken installieren:
- eine Vips-Bibliothek für dein Betriebssystem
- eine PHP-Erweiterung, die Bindungen zu dieser Low-Level-Bibliothek bereitstellt
Der Installationsprozess wird auf der php-vips-ext Projektseite auf Github erklärt. Wenn dein Entwicklungssystem zum Beispiel ein Mac ist und du Homebrew als Paketmanager verwendest, sind die Installationsschritte wie folgt
Installiere zuerst die libvips Systembibliothek:
Wenn alles funktioniert, solltest du vips in der Liste der aktivierten PHP-Module sehen können, wenn du php -m auf der Kommandozeile aufrufst.
Wenn vips dort nicht aufgeführt ist , musst du die Erweiterung in deiner PHP-Konfiguration aktivieren, indem du zum Beispiel eine neue Datei ext-vips.ini im Ordner conf.d/ in deinem PHP-System erstellst:
Aktivieren von Vips für Flow und Neos
Du kannst Vips mit nur zwei Schritten für dein Projekt aktivieren:
- nimm die Bibliothek rokka/imagine-vips in deine Composer-Abhängigkeiten auf
- konfiguriere Neos.Media so, dass Vips anstelle von ImageMagick verwendet wird
Installiere die benötigten Pakete
Beginne mit dem Hinzufügen der Composer-Abhängigkeit:
Wichtig: Ab Version 2 verwendet das Paket jcupitt/vips (eine transitive Abhängigkeit des Pakets rokka/imagine-vips ) das FFI von PHP.
Da dies auf Beach nicht aktiviert ist (wie es im PHP-Handbuch heißt: FFI ist gefährlich, da es erlaubt, auf einer sehr niedrigen Ebene mit dem System zu interagieren), musst du dieses Paket mit dem folgenden Befehl an die 1.x-Linie anheften. Andernfalls kann es passieren, dass du dein composer.lock auf einem Rechner aktualisierst, auf dem FFI aktiviert ist, was zu Fehlern nach der Bereitstellung auf Beach führt.
Konfiguriere dein Projekt
Füge dann die folgende Konfiguration zu deinen Einstellungen hinzu. Wir empfehlen, dass du in deiner globalen Konfiguration eine Settings.yaml für den Kontext Beach erstellst. Auf diese Weise kannst du mit ImageMagick oder GD in deinem lokalen Entwicklungssetup arbeiten und Vips automatisch in deiner Beach Instanz verwenden.
Erstelle eine Datei Configuration/Production/Beach /Instance/Settings .yaml und füge den folgenden Inhalt hinzu:
Die Treibereinstellung in Zeile 3 aktiviert Vips als Standardtreiber für die gesamte Bildverarbeitung. Als Notlösung lassen wir auch GD und ImageMagick zu. Die Einstellung in Zeile 15 ist eine Art Workaround: Vips unterstützt die Erstellung von Zeilensprungbildern nicht und wenn diese Einstellung mit etwas anderem als null gefüllt wird, meldet sich die Imagine Vips-Bibliothek mit einer Ausnahme.
Überprüfen, ob Vips gut funktioniert
Wenn du die obigen Schritte befolgt hast, übertrage das Ergebnis (vergiss wie immer nicht, deine composer.lock-Datei zu übertragen) und setze sie auf Beach ein. Du kannst überprüfen, ob deine Konfiguration richtig funktioniert, indem du nach den Einstellungen im Konfigurationsmodul Neos suchst oder die Einstellungen über die Kommandozeile anzeigst: