]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6108 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 24 Jul 2023 16:34:29 +0000 (18:34 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 24 Jul 2023 16:34:29 +0000 (18:34 +0200)
.docker/config/supervisor/medialibrary-worker.conf [new file with mode: 0644]
app/Http/Controllers/Admin/StorageController.php
config/media-library.php

diff --git a/.docker/config/supervisor/medialibrary-worker.conf b/.docker/config/supervisor/medialibrary-worker.conf
new file mode 100644 (file)
index 0000000..492bff1
--- /dev/null
@@ -0,0 +1,11 @@
+[program:medialibrary-worker]
+process_name=%(program_name)s_%(process_num)02d
+command=php /application/artisan queue:work --queue=medialibrary --timeout=0
+autostart=true
+autorestart=true
+user=toolbox
+group=www-data
+numprocs=12
+redirect_stderr=true
+stdout_logfile=/proc/self/fd/2
+stopwaitsecs=3600
index 3ebdc02d990cd79c6232ca6800db7cefb08993b2..06c2dd3f56563e163a19ed615ce6db3862021802 100644 (file)
@@ -3,8 +3,10 @@
 namespace App\Http\Controllers\Admin;
 
 use App\Http\Controllers\Controller;
+use Cubist\Backpack\Facades\App;
 use Cubist\Backpack\Http\Controllers\Base\XSendFileController;
 use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
+use Illuminate\Support\Facades\Artisan;
 use Spatie\MediaLibrary\MediaCollections\Models\Media;
 
 class StorageController extends Controller
@@ -25,6 +27,10 @@ class StorageController extends Controller
             abort(404);
         }
         $p = storage_path('app/public/') . $path;
+        if (!file_exists($p)) {
+            $cmd = 'media-library:regenerate --force --only-missing --ids=' . $mediaId;
+            Artisan::call($cmd);
+        }
         return XSendFileController::sendfile($p);
     }
 }
index 40748bc11ea320893e936e4a63aa183d01b5d8b7..f745f06ea35aacfbe7903ec356732ea1e04c2750 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Spatie\MediaLibrary\Conversions\Jobs\PerformConversionsJob;
+
 return [
 
     /*
@@ -12,7 +14,13 @@ return [
      * The maximum file size of an item in bytes.
      * Adding a larger file will result in an exception.
      */
-    'max_file_size' => 1024 * 1024 * 1000,
+    'max_file_size' => 1024 * 1024 * 1000, // 10MB
+
+    /*
+     * This queue connection will be used to generate derived and responsive images.
+     * Leave empty to use the default queue connection.
+     */
+    'queue_connection_name' => 'sync',
 
     /*
      * This queue will be used to generate derived and responsive images.
@@ -20,70 +28,53 @@ return [
      */
     'queue_name' => '',
 
+    /*
+     * By default all conversions will be performed on a queue.
+     */
+    'queue_conversions_by_default' => env('QUEUE_CONVERSIONS_BY_DEFAULT', true),
+
     /*
      * The fully qualified class name of the media model.
      */
     'media_model' => Spatie\MediaLibrary\MediaCollections\Models\Media::class,
 
-    'remote' => [
         /*
-         * Any extra headers that should be included when uploading media to
-         * a remote disk. Even though supported headers may vary between
-         * different drivers, a sensible default has been provided.
+     * The fully qualified class name of the model used for temporary uploads.
          *
-         * Supported by S3: CacheControl, Expires, StorageClass,
-         * ServerSideEncryption, Metadata, ACL, ContentEncoding
+     * This model is only used in Media Library Pro (https://medialibrary.pro)
          */
-        'extra_headers' => [
-            'CacheControl' => 'max-age=604800',
-        ],
-    ],
-
-    'responsive_images' => [
+    'temporary_upload_model' => Spatie\MediaLibraryPro\Models\TemporaryUpload::class,
 
         /*
-         * This class is responsible for calculating the target widths of the responsive
-         * images. By default we optimize for filesize and create variations that each are 20%
-         * smaller than the previous one. More info in the documentation.
-         *
-         * https://docs.spatie.be/laravel-medialibrary/v8/advanced-usage/generating-responsive-images
+     * When enabled, Media Library Pro will only process temporary uploads that were uploaded
+     * in the same session. You can opt to disable this for stateless usage of
+     * the pro components.
          */
-        'width_calculator' => Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator::class,
+    'enable_temporary_uploads_session_affinity' => true,
 
         /*
-         * By default rendering media to a responsive image will add some javascript and a tiny placeholder.
-         * This ensures that the browser can already determine the correct layout.
+     * When enabled, Media Library pro will generate thumbnails for uploaded file.
          */
-        'use_tiny_placeholders' => true,
-
-        /*
-         * This class will generate the tiny placeholder used for progressive image loading. By default
-         * the medialibrary will use a tiny blurred jpg image.
-         */
-        'tiny_placeholder_generator' => Spatie\MediaLibrary\ResponsiveImages\TinyPlaceholderGenerator\Blurred::class,
-    ],
+    'generate_thumbnails_for_temporary_uploads' => true,
 
     /*
-     * When converting Media instances to response the medialibrary will add
-     * a `loading` attribute to the `img` tag. Here you can set the default
-     * value of that attribute.
-     *
-     * Possible values: 'auto', 'lazy' and 'eager,
-     *
-     * More info: https://css-tricks.com/native-lazy-loading/
+     * This is the class that is responsible for naming generated files.
      */
-    'default_loading_attribute_value' => 'auto',
+    'file_namer' => Spatie\MediaLibrary\Support\FileNamer\DefaultFileNamer::class,
 
     /*
-     * This is the class that is responsible for naming conversion files. By default,
-     * it will use the filename of the original and concatenate the conversion name to it.
+     * The class that contains the strategy for determining a media file's path.
      */
-    'conversion_file_namer' => \Spatie\MediaLibrary\Conversions\DefaultConversionFileNamer::class,
+    'path_generator' => Spatie\MediaLibrary\Support\PathGenerator\DefaultPathGenerator::class,
 
     /*
-     * The class that contains the strategy for determining a media file's path.
+     * Here you can specify which path generator should be used for the given class.
      */
-    'path_generator' => Spatie\MediaLibrary\Support\PathGenerator\DefaultPathGenerator::class,
+    'custom_path_generators' => [
+        // Model::class => PathGenerator::class
+        // or
+        // 'model_morph_alias' => PathGenerator::class
+    ],
 
     /*
      * When urls to files get generated, this class will be called. Use the default
@@ -91,6 +82,12 @@ return [
      */
     'url_generator' => Spatie\MediaLibrary\Support\UrlGenerator\DefaultUrlGenerator::class,
 
+    /*
+     * Moves media on updating to keep path consistent. Enable it only with a custom
+     * PathGenerator that uses, for example, the media UUID.
+     */
+    'moves_media_on_update' => false,
+
     /*
      * Whether to activate versioning when urls to files get generated.
      * When activated, this attaches a ?v=xx query string to the URL.
@@ -104,6 +101,8 @@ return [
      */
     'image_optimizers' => [
         Spatie\ImageOptimizer\Optimizers\Jpegoptim::class => [
+            '-m85', // set maximum quality to 85%
+            '--force', // ensure that progressive generation is always done also if a little bigger
             '--strip-all', // this strips out all text information such as comments and EXIF data
             '--all-progressive', // this will make sure the resulting image is a progressive one
         ],
@@ -122,6 +121,12 @@ return [
             '-b', // required parameter for this package
             '-O3', // this produces the slowest but best results
         ],
+        Spatie\ImageOptimizer\Optimizers\Cwebp::class => [
+            '-m 6', // for the slowest compression method in order to get the best compression.
+            '-pass 10', // for maximizing the amount of analysis pass.
+            '-mt', // multithreading for some speed improvements.
+            '-q 90', //quality factor that brings the least noticeable changes.
+        ],
     ],
 
     /*
@@ -135,6 +140,12 @@ return [
         Spatie\MediaLibrary\Conversions\ImageGenerators\Video::class,
     ],
 
+    /*
+     * The path where to store temporary files while performing image conversions.
+     * If set to null, storage_path('media-library/temp') will be used.
+     */
+    'temporary_directory_path' => null,
+
     /*
      * The engine that should perform the image conversions.
      * Should be either `gd` or `imagick`.
@@ -149,18 +160,80 @@ return [
     'ffmpeg_path' => env('FFMPEG_PATH', '/usr/bin/ffmpeg'),
     'ffprobe_path' => env('FFPROBE_PATH', '/usr/bin/ffprobe'),
 
-    /*
-     * The path where to store temporary files while performing image conversions.
-     * If set to null, storage_path('media-library/temp') will be used.
-     */
-    'temporary_directory_path' => null,
-
     /*
      * Here you can override the class names of the jobs used by this package. Make sure
      * your custom jobs extend the ones provided by the package.
      */
     'jobs' => [
-        'perform_conversions' => \Spatie\MediaLibrary\Conversions\Jobs\PerformConversionsJob::class,
-        'generate_responsive_images' => \Spatie\MediaLibrary\ResponsiveImages\Jobs\GenerateResponsiveImagesJob::class,
+        'perform_conversions' => PerformConversionsJob::class,
+        'generate_responsive_images' => Spatie\MediaLibrary\ResponsiveImages\Jobs\GenerateResponsiveImagesJob::class,
+    ],
+
+    /*
+     * When using the addMediaFromUrl method you may want to replace the default downloader.
+     * This is particularly useful when the url of the image is behind a firewall and
+     * need to add additional flags, possibly using curl.
+     */
+    'media_downloader' => Spatie\MediaLibrary\Downloaders\DefaultDownloader::class,
+
+    'remote' => [
+        /*
+         * Any extra headers that should be included when uploading media to
+         * a remote disk. Even though supported headers may vary between
+         * different drivers, a sensible default has been provided.
+         *
+         * Supported by S3: CacheControl, Expires, StorageClass,
+         * ServerSideEncryption, Metadata, ACL, ContentEncoding
+         */
+        'extra_headers' => [
+            'CacheControl' => 'max-age=604800',
+    ],
+    ],
+
+    'responsive_images' => [
+        /*
+         * This class is responsible for calculating the target widths of the responsive
+         * images. By default we optimize for filesize and create variations that each are 30%
+         * smaller than the previous one. More info in the documentation.
+         *
+         * https://docs.spatie.be/laravel-medialibrary/v9/advanced-usage/generating-responsive-images
+         */
+        'width_calculator' => Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator::class,
+
+        /*
+         * By default rendering media to a responsive image will add some javascript and a tiny placeholder.
+         * This ensures that the browser can already determine the correct layout.
+         */
+        'use_tiny_placeholders' => true,
+
+        /*
+         * This class will generate the tiny placeholder used for progressive image loading. By default
+         * the media library will use a tiny blurred jpg image.
+         */
+        'tiny_placeholder_generator' => Spatie\MediaLibrary\ResponsiveImages\TinyPlaceholderGenerator\Blurred::class,
     ],
+
+    /*
+     * When enabling this option, a route will be registered that will enable
+     * the Media Library Pro Vue and React components to move uploaded files
+     * in a S3 bucket to their right place.
+     */
+    'enable_vapor_uploads' => env('ENABLE_MEDIA_LIBRARY_VAPOR_UPLOADS', false),
+
+    /*
+     * When converting Media instances to response the media library will add
+     * a `loading` attribute to the `img` tag. Here you can set the default
+     * value of that attribute.
+     *
+     * Possible values: 'lazy', 'eager', 'auto' or null if you don't want to set any loading instruction.
+     *
+     * More info: https://css-tricks.com/native-lazy-loading/
+     */
+    'default_loading_attribute_value' => null,
+
+    /*
+     * You can specify a prefix for that is used for storing all media.
+     * If you set this to `/my-subdir`, all your media will be stored in a `/my-subdir` directory.
+     */
+    'prefix' => env('MEDIA_PREFIX', ''),
 ];