Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
#1 · Zasláno: 13. 5. 2012, 14:35:44
Zdravím,
pomocí tohoto kódu ověřuji dostupnost souborů $curl = curl_init("http://www.example.cz/file.txt"); curl_setopt($curl, CURLOPT_TIMEOUT_MS, 60000); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); if (!curl_exec($curl)) { echo "NE"; } else { echo "ANO"; } curl_close($curl); Některé soubory jsou ale příliš velké a nastavení CURLOTP_RETURNTRANSFER z nich vytvoří string, který poté ve funkci curl_exec() hodí chybu z důvodu přesáhnutí memory_limitu() . Existuje nějaké nastavení nebo možnost jak načíst "jen kousek" souboru a tím zjistit, že existuje, zkrátka omezit tak velikost načítaného souboru? Já v podstatě ten soubor ani nepotřebuji načíst do stringu, ale pouze zjistit zda-li existuje. |
||
Darker Profil |
#2 · Zasláno: 13. 5. 2012, 16:59:06
|
||
Sylar Profil |
#3 · Zasláno: 13. 5. 2012, 17:16:57
Darker:
to je možnost, ale potřeboval bych ještě nějak ošetřit, aby se v případě, že server nebude nějakou dobu odpovídat, se na to skript vykašlal, označil jej jako nedostupný a šel na další soubor. V opačném případě tam totiž tento skript zůstane viset a nehne se z místa. Proto jsem to až do teď dělal přes curl, kde se ta "časomíra" dá snadno nastavit. |
||
Darker Profil |
#4 · Zasláno: 13. 5. 2012, 17:22:05
ini_set('default_socket_timeout', 30); Google není na internetu jen pro mě... |
||
Sylar Profil |
#5 · Zasláno: 13. 5. 2012, 17:40:58
Darker:
díky zkusím. hledal jsem, bohužel ne vždy hned najdeš přesně to co potřebuješ. |
||
Davex Profil |
#6 · Zasláno: 13. 5. 2012, 19:15:39
Darker:
„Get headers“ Bez dalšího nastavení stahuje funkce get_headers() také celý soubor. Aby se nestahoval, tak se musí nastavit výchozí metoda na HEAD podle druhého příkladu z dokumentace.
Sylar: Mělo by stačit nastavit curl_setopt($curl, CURLOPT_NOBODY, true) a po odeslání požadavku analyzovat vrácený kód z curl_getinfo($curl, CURLINFO_HTTP_CODE) .
|
||
Časová prodleva: 12 let
|
0