Generator miniaturek
- job:
N1ebieski\IDir\Jobs\Thumbnail\GeneratorJob
# Opis
Od wersji v11 iDir umożliwia generowanie miniaturek po stronie serwera. Do tego celu wykorzystuje zależność spatie/browsershot która jest adapterem dla usługi Puppeteer, która uruchamia przeglądarkę Google Chrome w trybie headless na serwerze.
Miniaturki generowane są asynchronicznie w momencie ich wywołania. Dla każdego zadania tworzony jest job i ustawiony w kolejce do wykonania. Wygenerowana miniaturka obowiązkowo zapisywana jest do cache na zdefiniowany przez użytkownika czas.
Moderator ma możliwość odświeżenia miniaturki z poziomu listy wpisów w panelu administracyjnym.
# Instalacja
Uwaga: generowanie miniaturek wymaga serwera VPS lub dedykowanego.
Uwaga: generowanie miniaturek wymaga włączonego systemu cachowania.
- W celu uruchomienia usługi należy wpierw przygotować środowisko produkcyjne zgodnie z instrukcją zawartą na stronie spatie/browsershot.
- Należy upewnić się, że w pliku composer.json w polu "repositories" znajduje się:
{ "type": "vcs", "url": "https://github.com/N1ebieski/browsershot.git" }
- Następnie należy zainstalować zależność z poziomu głównego folderu z aplikacją poleceniem:
composer require spatie/browsershot:3.61.0+icore
- Przełączyć tryb wyświetlania miniaturek na local w pliku .ENV w głównym folderze z aplikacją:
IDIR_DIR_THUMBNAIL_DRIVER=local
# Konfiguracja miniaturek
Konfiguracji można dokonać z poziomu pliku .ENV w głównym folderze z aplikacją.
Szerokość i wysokość okna przeglądarki w której wyświetlana jest strona:
IDIR_DIR_THUMBNAIL_LOCAL_WINDOW_SIZE_WIDTH=1366
IDIR_DIR_THUMBNAIL_LOCAL_WINDOW_SIZE_HEIGHT=1024
Szerokość i wysokość finalnego obrazka miniaturki:
IDIR_DIR_THUMBNAIL_LOCAL_IMAGE_SIZE_WIDTH=400
IDIR_DIR_THUMBNAIL_LOCAL_IMAGE_SIZE_HEIGHT=300
Opóźnienie (w sekundach) jakie ma poczekać przeglądarka zanim wykona zrzut obrazka (przydatne w przypadku ładowania assetów js, plików graficznych strony itd.):
IDIR_DIR_THUMBNAIL_LOCAL_DELAY=5
# Konfiguracja Puppeteer
Konfiguracji można dokonać z poziomu pliku .ENV w głównym folderze z aplikacją.
Opcjonalna ścieżka do pliku wykonywalnego NodeJS. W przypadku pustej wartości system użyje domyślnej ścieżki na serwerze.
IDIR_PUPPETEER_NODE_PATH=
Opcjonalna ścieżka do folderu z zależnościami NodeJs. W przypadku pustej wartości system użyje domyślnej ścieżki na serwerze.
IDIR_PUPPETEER_NODE_MODULE_PATH=
Opcjonalna ścieżka do pliku wykonywalnego NPM. W przypadku pustej wartości system użyje domyślnej ścieżki na serwerze.
IDIR_PUPPETEER_NPM_PATH=
Opcjonalna ścieżka do pliku wykonywalnego Google Chrome. W przypadku pustej wartości system użyje domyślnej ścieżki na serwerze.
IDIR_PUPPETEER_CHROME_PATH=
Opcjonalna lista user-agentów w formacie tablicy PHP wykorzystywana podczas wysyłania requestów dostępna z poziomu pliku /config/idir.php:
'puppeteer' => [
'user_agents' => [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0'
],
Opcjonalna lista proxy-serverów w formacie tablicy PHP wykorzystywana podczas wysyłania requestów dostępna z poziomu pliku /config/idir.php:
'puppeteer' => [
'proxy_servers' => [
//
],
# Placeholder miniaturki w trakcie generowania
Z racji tego, że proces generowania miniaturek jest czasochłonny i kolejkowany, na czas generowania miniaturki wyświetlany jest placeholder znajdujący się w lokalizacji:
/public/images/vendor/idir/thumbnail-generating.png