Curl je nástroj, který nám umožňuje odesílat nebo přijímat data po síti prostřednictvím různých protokolů. Jedním z jeho nejběžnějších použití je na serverech zasílání požadavků HTTP. Pochopení, jak pracovat s curl, je při vývoji webu zásadní, zvláště když potřebujeme komunikovat s API. Jednou z klíčových věcí při vytváření požadavků HTTP je schopnost správně zpracovat chybové stavy nebo stavy úspěchu. PHP nám nabízí funkci `curl_getinfo()` pro získání stavu HTTP požadavku.
[b]Řešení pro tisk stavového kódu HTTP v PHP pomocí curl[/b] je poměrně jednoduché.
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://example.com"); curl_exec($curl); if (!curl_errno($curl)) { $info = curl_getinfo($curl); echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url']; echo 'HTTP Status: ' . $info['http_code']; } else { echo 'Curl error: ' . curl_error($curl); } curl_close($curl);
Abychom porozuměli tomuto bloku kódu, pojďme si jej rozebrat krok za krokem:
Nejprve inicializujeme novou relaci curl pomocí `curl_init()`. Tato funkce vrací při úspěchu kliku, při chybách FALSE. K nastavení některých voleb pro přenos cURL používáme curl_setopt. V našem případě nastavíme CURLOPT_URL na adresu URL, kterou chceme načíst.
Po nastavení všech našich možností použijeme k provedení relace `curl_exec()`. Pokud je relace úspěšně provedena, `curl_errno()` vrátí 0. V tomto konkrétním případě nás výstup zajímá pouze v případě, že nedošlo k chybě. Pokud nedojde k žádné chybě, použijeme `curl_getinfo()` na našem ovladači curl k načtení informací o relaci. Informace, které nás zajímají zejména, jsou informace o adrese URL a celková doba přenosu, a co je nejdůležitější, stavový kód HTTP. Pokud došlo k chybě při provádění curl, ošetříme ji v příkazu else.
Pochopení stavových kódů HTTP
HTTP odpovědi jsou dodávány se stavovými kódy, které udávají typ odpovědi. Jsou to trojciferná čísla, kde první číslice definuje třídu odpovědi. Existuje 5 tříd odpovědí:
- 1xx (informační): Požadavek byl přijat, proces pokračuje
- 2xx (Úspěšný): Požadavek byl úspěšně přijat, porozuměn a přijat
- 3xx (přesměrování): Pro dokončení požadavku je třeba provést další akci
- 4xx (Chyba klienta): Požadavek obsahuje špatnou syntaxi nebo jej nelze splnit
- 5xx (Chyba serveru): Serveru se nepodařilo splnit zjevně platný požadavek
Pochopení těchto kódů pomáhá při správném zpracování odpovědí v našich aplikacích.
Některé běžné funkce PHP curl
Knihovna curl PHP má spoustu funkcí, díky kterým je práce s HTTP hračkou. Zde je několik:
- curl_init: Inicializuje novou relaci cURL
- curl_setopt: Nastavte možnost v relaci cURL
- curl_exec: Provede danou relaci cURL
- curl_getinfo: Získání informací o relaci cURL
- curl_errno: Vrátí poslední číslo chyby
- curl_error: Vrátí řetězec obsahující poslední chybu cURL