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.

  1. W celu uruchomienia usługi należy wpierw przygotować środowisko produkcyjne zgodnie z instrukcją zawartą na stronie spatie/browsershot.
  2. Należy upewnić się, że w pliku composer.json w polu "repositories" znajduje się: 
            {
                "type": "vcs",
                "url": "https://github.com/N1ebieski/browsershot.git"
            }
  3. Następnie należy zainstalować zależność z poziomu głównego folderu z aplikacją poleceniem: 
    composer require spatie/browsershot:3.61.0+icore
  4. 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