Files
KantSites/src/Ops/Tasks/ImageVariantsTask.php
T
kantarciandClaude Fable 5.2 7d0369bada Serve images without PHP, add the 720 and 1280 steps, trim two hot paths
- Image widths are 480, 720, 960, 1280, 1600 and 2400. A phone needed
  721 pixels and got 960. Existing images receive the new steps from
  a task; stored pages pick them up at render time, so no document is
  rewritten. Mobile backgrounds use 720.
- A variant served once is mirrored to public/media, and a rewrite rule
  lets the web server deliver it from there. var/media stays the source.
- The hero preload follows the image each device really shows.
- The post navigation reads the order and then two posts instead of
  up to 500 documents.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 12:24:30 +01:00

50 lines
1.3 KiB
PHP

<?php
namespace App\Ops\Tasks;
use App\Content\MediaLibrary;
/**
* Reicht vorhandenen Bildern Größen nach, die es bei ihrem Upload noch nicht gab.
*
* Mit 1.42.0 kamen die Stufen 720 und 1280 dazu. Neue Uploads bekommen sie sofort; für alles,
* was schon in der Mediathek liegt, rechnet diese Aufgabe sie portionsweise aus der größten
* vorhandenen Variante. Ist nichts mehr offen, kostet ein Lauf eine Abfrage.
*/
final class ImageVariantsTask implements Task
{
public function __construct(private MediaLibrary $media)
{
}
public function name(): string
{
return 'image-variants';
}
public function label(): string
{
return 'Bildgrößen ergänzen';
}
public function explanation(): string
{
return 'Ohne sie laden Telefone bei älteren Bildern eine größere Fassung als nötig. Angezeigt wird trotzdem alles.';
}
public function interval(): int
{
return 900;
}
public function run(): string
{
$ergebnis = $this->media->fillVariants();
if (0 === $ergebnis['done'] && 0 === $ergebnis['left']) {
return 'Alle Bilder haben alle Größen.';
}
return sprintf('%d Bild(er) ergänzt, %d warten auf den nächsten Lauf.', $ergebnis['done'], $ergebnis['left']);
}
}