Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Document silverback:api-components:imagine:generate (pre-generating imagine variants)

クローズ 初心者向け
#213 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
78/100
issue の種類
ドキュメント
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
kubernetes, php
領域
documentation

調査の方向性

content/4.api/ の uploads / imagine セクションから始め、issue の詳細に基づいてコマンド、そのオプション、出力、およびデプロイ後のワークフローを文書化してください。いつ実行するか、安全性と終了時の動作、HTTP キャッシュをパージする手順を説明してください。説明されているコマンドとワークフローをページが正確に網羅すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

The API bundle adds a console command to generate missing imagine variants ahead of requests: components-web-app/api-components-bundle#416 (issue components-web-app/api-components-bundle#413).

Please document it in the bundle's uploads / imagine section (content/4.api/).

What to document

Why it exists. When an app adds an imagine filter to an existing field, every existing image needs a new variant. Without this command, each variant is generated the first time the API serialises a resource holding the image, inside a visitor's request. A page with many images then generates many variants in one request, within the web pod's memory limit. A variant skipped over the memory budget is retried on every request.

The command.

bin/console silverback:api-components:imagine:generate [--filter=<filter> ...] [--class=<FQCN> ...] [--dry-run] [-v]
  • Walks every uploadable entity and field, drafts included. A field's filters are its UploadableField imagineFilters plus, for an entity implementing ImagineFiltersInterface, getImagineFilters($property, null). Only raster images are processed (SVG and non-images are left out).
  • Generates, one at a time, each variant that is not stored yet, and saves its file info. Originals and stored variants are not touched, so it is safe to re-run after an interruption: a second run generates nothing.
  • --filter (repeatable) only generates those filters; a name that is not a configured LiipImagine filter set exits 2 before anything runs. --class (repeatable) only walks that uploadable class or its subclasses; a class that is not uploadable exits 2.
  • Variants are written with the field's imagineCacheControl (from #[UploadableField]), falling back to silverback_api_components.uploadable.cache_control.imagine, exactly as variants generated during a request.
  • --dry-run counts what is missing and generates nothing.
  • Output: counts of generated, already stored, skipped over the memory budget, failed, and original missing (a dry run prints "To generate" instead of "Generated"). -v lists each variant.
  • Exit code 1 if any variant failed, so a Kubernetes Job shows as failed. Variants skipped over the memory budget, and originals whose file is missing, are reported but exit 0.
  • It uses the same memory budget as request-time generation (silverback_api_components.imagine.memory_limit), and a CLI with memory_limit=-1 is never checked. A variant over the budget is logged and skipped.
  • Only registered when LiipImagineBundle is enabled.

How to run it after a deploy that adds a filter.

  1. Run the command as a one-off Kubernetes Job from the API (php) image, so the image processing stays out of the web pods. Optionally run --dry-run first to see how many variants are missing.
  2. Then purge the HTTP cache (bin/console silverback:api-components:purge-http-cache, or POST /_/http_cache/purge), so cached API responses and pages list the new variants.
主要言語
Vue
スター
0
フォーク
0
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

components-web-app/docs のほかの issue

components-web-app/docs の issue をすべて見る

似ている issue

Documentation の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。