PHP 8.4.0 RC4 available for testing

curl_init

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

curl_initInitialise une session cURL

Description

curl_init(?string $url = null): CurlHandle|false

Initialise une nouvelle session et retourne un gestionnaire cURL.

Liste de paramètres

url

Si fourni, alors CURLOPT_URL prendra cette valeur. Cela peut être configuré manuellement en utilisant la fonction curl_setopt().

Note:

Le protocole file est désactivé par cURL si open_basedir est défini.

Valeurs de retour

Retourne une session cURL en cas de succès, false si une erreur survient.

Historique

Version Description
8.0.0 Cette fonction retourne désormais une instance de CurlHandle; auparavant, une resource était retournée.
8.0.0 url est désormais nullable.

Exemples

Exemple #1 Initialiser une session cURL et récupérer une page web

<?php

// Initialise une nouvelle session cURL
$ch = curl_init();

// Définir l'URL et les autres options appropriées
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// Récupérer l'URL et la passer au navigateur
curl_exec($ch);

?>

Voir aussi

add a note

User Contributed Notes 2 notes

up
2
NextgenThemes
1 year ago
This may be obvious, but:

Note that is MUCH faster to use use a single instance to make a series of curl requests rather than creating a new instance for each request.
up
-7
VictorWumble
11 months ago
NextgenThemes' note is applicable for very very limited situations. For completeness's sake, let's consider the following code snippet:

<?php

/*
Your localhost has a default Apache which simply returns "It works!"
*/

$repeatCount = 1000;

// begin section
// this section is slow

// call localhost, create new handle each time
$time = microtime(true);
foreach (
range(1, $repeatCount) as $ignored) {
$ch = curl_init("http://localhost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
// do something with the response
unset($response);
curl_close($ch);
}
unset(
$ch);
$elapsed = microtime(true) - $time;
echo
"Recreate curl handle, time taken: " . $elapsed . "\n";

// end section

// begin section
// this section is much faster

// call localhost, but reuse the handle
$time = microtime(true);
$ch = curl_init("http://localhost");
foreach (
range(1, $repeatCount) as $ignored) {
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
// do something with the response
unset($response);
}
curl_close($ch);
$elapsed = microtime(true) - $time;
echo
"Reuse curl handle, time taken: " . $elapsed . "\n";

// end section

/*
Example output:
Recreate curl handle, time taken: 11.289301872253
Reuse curl handle, time taken: 0.53790807723999
*/

?>

The above code supports the claim by NextgenThemes, however the "send curl requests in sequence" method in general is unnecessarily slow because:
- network transfer time (e.g. 100ms)
- remote processing time (e.g. 50ms)
- usually, no need to send requests in specific sequence

So, in practice, when you need to send multiple curl requests at the same time, just use the curl_multi_init method. Don't consider the "send curl requests in sequence" method unless you have very very specific/special needs.
To Top