[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Bildcache manuell erzeugen
Seite 1 von 1

Bildcache manuell erzeugen

Verfasst: 30. Okt 2016, 13:36
von Tobias Krais
Hi zusammen,

wenn ich im Media Manager einen Mediatypen anlege und dann das Bild im Web aufrufe wird im Cache ein Bild angelegt. Meine Frage: kann ich den Vorgang des "Cachens" auch manuell anstoßen?

Code: Alles auswählen

$media = new rex_managed_media(rex_path::media($pic));
$media_manager = new rex_media_manager($media);
if($media_manager->isCached() == FALSE) {
    // TODO generate pic in cache            
}
Hintergrund ist der: ich muss für eine Übertragung von Gebrauchten Maschinen Bilder in ein ZIP packen und dann auf ein Portal übertragen. Die Orginalen Bilder sind meist zu groß. Deshalb möchte ich die Bilder aus dem Cache nehmen, kann das aber nur, wenn das Bild dort auch existiert.

Hat jemand eine Idee?

Liebe Grüße,

Tobi

Re: Bildcache manuell erzeugen

Verfasst: 30. Okt 2016, 17:59
von ds
Das Addon Cache-Warmup macht sowas: https://github.com/FriendsOfREDAXO/cache_warmup
Vielleicht hilft es dir, die Funktionalität abzuschauen:

Verwendete Bilder in Seiten, Metaangaben und YForms selektieren:
https://github.com/FriendsOfREDAXO/cach ... or.php#L24

Cachefiles erstellten:
https://github.com/FriendsOfREDAXO/cach ... images.php

Re: Bildcache manuell erzeugen

Verfasst: 30. Okt 2016, 18:14
von Tobias Krais
Hi ds,

ja, genau so einen komplizierten Weg wollte ich vermeiden. Ich glaube ich werde im Fall dass das Bild noch nicht erstellt wurde die URL einfach mit

Code: Alles auswählen

getimagesize(rex::getServer()."index.php?rex_media_type=". $media_manager_type ."&rex_media_file=". $filename)
ansprechen und damit generieren.

Danke für den Hinweis.

Liebe Grüße,

Tobias

Re: Bildcache manuell erzeugen

Verfasst: 30. Okt 2016, 22:23
von Tobias Krais
Hi zusammen,

hab einen pull request gemacht: https://github.com/redaxo/redaxo/pull/880

Dann könnte folgender Code das Problem lösen:

Code: Alles auswählen

$pic = "meinBildName.jpg";
$media_type = "mein_media_manager_typ";
$media = new rex_managed_media(rex_path::media($pic));
$media_manager = new rex_media_manager($media);
$media_manager->setType($media_type);
if($media_manager->isCached() == FALSE) {
    ob_start();
    $media_manager->setCachePath(rex_path::addonCache("media_manager"));
    $media->sendMedia($media_manager->getCacheFilename(), $media_manager->getHeaderCacheFilename(), TRUE);
    ob_end_clean();
} 
Ohne den Pull request ist es nicht mal möglich den Cache Dateinamen auszulesen. Hoffentlich wird er mit aufgenommen.

Liebe Grüße,

Tobi