cURL requests
| Init a handle | |
| Set options | |
| Exec and close | |
| Handle errors |
Init a handle
Every request starts with a handle that stores the target and the settings. Create it with the URL, then tune behavior before sending.
Return transfer keeps the answer as a string, while a timeout stops slow servers from blocking the script.
$ch = curl_init("https://example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10);
Set options
Options control headers, redirects, and methods without changing the main flow. Set them one by one after init for clarity.
Keep redirect limits small and send explicit Accept headers when asking for JSON data.
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Accept: application/json"]); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
Exec and close
Exec sends the request and returns the body. Close the handle after reading the answer to free the connection.
Short previews during debugging help confirm shape before parsing the full payload.
$response = curl_exec($ch); curl_close($ch); echo substr((string) $response, 0, 200);
Handle errors
Network calls can fail, so every exec needs a check. A false result means the error helpers hold the reason and the code.
Log both parts and close the handle, then retry or show a friendly message.
$response = curl_exec($ch); if ($response === false) { echo curl_error($ch); echo curl_errno($ch); } curl_close($ch);
Next: Parallel cURL
Article author: Arthur Isaev