ugrás a tartalomhoz

Amazon S3 streamwrapper PNG megnyitás Drupal 7 alatt

Poetro · 2012. Jan. 30. (H), 20.02
Drupal 7 alatt már szépen lehet kezelni PHP-s streamWrapper-eket. Van egy ilyen URI-m: s3://images/d521131ae469573d684ff2f5807fca7f29d9b3ab.png. Létezik az s3:// „protokolhoz” egy nagyszerűen működő modul Drupal 7 alá. Ezt a fájlt meg szeretném nyitni. Viszont valamiért imagecreatefrompng($uri) nagyon lassan nyitja meg a fájlt, holott a fájl nem túl nagy, és minden egyéb esetben jól reagál az oldal (azaz például a file_exists nagyon gyorsan visszatér). Hogyan lenne érdemes módosítani a fájlok kezelését, hogy ne legyen ekkora a késés mire megérkezik a válasz az S3-ból.
Esetleg érdemes lenne előbb ideiglenesen letölteni a fájlt, így lenne egy lokális másolat, azon dolgozni, majd valami cron szkripttel törölni ezeket az ideiglenes fájlokat? Az is lehet, hogy csak maga az imagecreatefrompng viselkedik ilyen furán távoli URL-ek esetén, elvégre más furcsaságokat is találtam már streamWrapperek esetén GD2 függvényekben.
Ilyen például, hogy az imagepng és imagejpeg nem képes kezelni őket, nekik valós fájlok kellenek.
 
1

Elvileg pont ezért lassú

pp · 2012. Jan. 31. (K), 10.57
http://drupal.org/node/696150

pp
2

Memóriába

Poetro · 2012. Jan. 31. (K), 12.03
Hát igen, éppen ezért írom én a fájlt eleve memóriába:
    ob_start();
    if ($type == 'jpeg') {
      imagejpeg($im2, NULL, 90);
    }
    else {
      imagealphablending($im2, FALSE);
      imagesavealpha($im2, TRUE);
      imagepng($im2);
    }
    $file = file_save_data(ob_get_clean(), $filename);
Már csak az olvasás optimalizálását kellene szépen megoldani (nameg a fentit talán optimalizálni, bár 1Mb-nál nem nagyobbak a fájlok).