Autor | Zpráva | ||
---|---|---|---|
PetraPP Profil |
#1 · Zasláno: 16. 11. 2014, 13:19:12
Pro 99% stáhnutí obrázku používám Curl, který obrázek natáhne do stringu, který pak ukládám do souboru. V tomto uloženém souboru pak obrázky dál upravuji (ořezávání apod.). Script ale pracuje dlouho a tak bych se chtěla zeptat na případnou optimalizaci.
Uložení do souboru obrazek_xml.dat dělám záměrně. Zpočátku jsem zjišťovala příponu obrázku (.jpg, .png), ale nebylo to příliš efektivní, protože někdy URL byla vedena na obrázek v PHP, tak že string obrázku ukládám jako obrazek_xml.dat Zde je script: foreach ($xml_data as $data) { $image_url = $data["obrazek_url"]; // nacteme pozadovany obrazek z URL adresy $header=array( 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: cs,en-us;q=0.7,en;q=0.3', 'Accept-Charset: ISO-8859-1,windows-1250,utf-8;q=0.7,*;q=0.7', 'Keep-Alive: 115', 'Connection: keep-alive',); $ch = curl_init($image_url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_ENCODING, '' ); $image_file = curl_exec($ch); curl_close($ch); // ulozime soubor do cache NEpřímo unlink ("../cache/obrazek_xml.dat"); file_put_contents("../cache/obrazek_xml.dat", $image_file); // následuje script na načtení souboru a zpracování obrázku } |
||
Tori Profil |
if (@imagecreatefromjpeg($file) === FALSE) { // obrázek není JPEG } elseif (@imagecreatefrompng($file) === FALSE) { // obrázek není PNG } Potřebujete mít obrázky zpracované hned po stažení, nebo to počká pár hodin? Dalo by se oddělit stahování (ručně) a zpracování (CRONem někdy v noci, s použitím set_time_limit), akorát ty ještě nezpracované soubory zaberou dočasně místo na disku. |
||
juriad Profil |
#3 · Zasláno: 16. 11. 2014, 13:51:32
Tori:
Lepší je otevřít ten soubor pomocí fopen a přečíst si prvních pár bytů (hexadecimálně): jpeg začíná: ff d8 ff e0 xx xx 4a 46 49 46 00 png začíná: 89 50 4e 47 0d 0a 1a 0a A pro tento test není nutné soubor ani ukládat do souboru; to lze zjistit přímo z toho stringu. |
||
Časová prodleva: 9 let
|
0