mackrais/thumbnail-bundle

v1.0.4 2021-08-03 13:15 UTC

This package is auto-updated.

Last update: 2024-09-29 06:03:07 UTC


README

启用基于异步工作进程的缩略图创建。

向 Pimcore 系统添加大量高分辨率图片可能会导致高负载情况。通过作业延迟缩略图创建可以缓解这种情况。

如果系统中新添加了资产,将阻止正常立即生成缩略图,并添加一个默认占位符缩略图。同时,为 Symfony 消息传递组件添加缩略图创建作业。一旦消息被处理,占位符图像将被正确缩略图替代。

许可证

GPLv3 - 查看:gpl-3.0.txt

需求

  • Pimcore >= 6.0.0
  • 如果使用 rabbitmq 传输,则需要 RabbitMQ(对于 PHP 7.3 上的 ampq,请参阅:php-amqp/php-amqp#337
  • 如果使用 redis 传输,则需要 php-redis >= 4.3
  • 如果使用 redis 传输,则需要 redis 服务器 >= 4.3(需要 XREADGROUP 支持)

安装

  1. 使用 composer 安装包 composer require mackrais/thumbnail-bundle
  2. 配置包(见下文)
  3. 执行 bin/console pimcore:bundle:enable MackraisThumbnailBundle

配置

  1. 只要没有补丁阻止 Pimcore 生成系统缩略图,更改 vendor/pimcore/pimcore/models/Asset/Image.php 文件中的 update 方法,将 $path = $this->getThumbnail(Image\Thumbnail\Config::getPreviewConfig())->getFileSystemPath(); 行更改为 $path = $this->getThumbnail(Image\Thumbnail\Config::getPreviewConfig())->getFileSystemPath(true);
  2. 禁用低质量预览生成
    # app/config/config.yml
    pimcore:
        assets:
            image:
                low_quality_image_preview:
                   enabled: false
  1. 配置 Symfony Messenger(请参阅 https://symfony.com.cn/doc/current/messenger.html)。
    # app/config/local/messenger.yaml
    framework:
        messenger:
            transports:
                #sample format:
                #async: "%env(MESSENGER_TRANSPORT_DSN)%"
                # sample redis transport, tested: 
                async: "redis://redis:6379/messages"
                #doctrine does not work on pimcore, as only dbal is loaded, not doctrine!
                #async: "doctrine://default"
                # sample rabbitmq, tested:
                #async: "amqp://rabbitmq:rabbitmq@rabbitmq:5672/%2f/messages"
            routing:
                # async is whatever name you gave your transport above
                'Mackrais\ThumbnailBundle\Message\ThumbnailJob':  async
            # The bus that is going to be injected when injecting MessageBusInterface
            default_bus: command.bus
            buses:
                command.bus:
                    middleware:
                        - validation
  1. 通过控制台(或 supervisord,请参阅 https://symfony.com.cn/doc/current/messenger.html)处理异步消息(作业),添加 -vv 以查看个别处理的消息
    bin/console messenger:consume

配置额外的缩略图格式

如果资产上有文本属性 thumbnailConfig(可能继承自父文件夹),其中包含逗号分隔的资产格式名称列表,则还会生成这些格式的缩略图。

配置缩略图占位符

@todo 尚未实现