| 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: 12 let
|
|||
0