Autor Zpráva
Sylar
Profil
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
Sylar:
pouze zjistit zda-li existuje.
Get headers.
Sylar
Profil
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
ini_set('default_socket_timeout', 30);
http://stackoverflow.com/questions/6050393/how-to-set-timeout-for-get-meta-tags-get-headers

Google není na internetu jen pro mě...
Sylar
Profil
Darker:
díky zkusím. hledal jsem, bohužel ne vždy hned najdeš přesně to co potřebuješ.
Davex
Profil
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).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0