La fonction
/*
UrlGetContentsCurl ( string url [, int timeout [, bool content [, int offset [, int maxlen]]]] )
Arguments:
string url: url avec son protocole. Par ex.
http://www.phpfrance.com/forums/index.php
http://www.rfc-editor.org/rfc/rfc2606.txt
ftp://ftp.rfc-editor.org/in-notes/rfc2606.txt
int timeout: la limite de temps.
Optionnel. Défaut: valeur de max_execution_time.
bool content: true si on veut récupérer le contenu de la page. False, la fonction renvoie
le temps de réponse de la page.
Optionnel. Défaut: true.
int offset: début de la capture de contenu, en octets.
Optionnel. Défaut: 0 (début de la page)
int maxlen: nombre d'octets à capturer à partir de offset.
Optionnel. Défaut: null (tout à partir de la position de l'offset)
Retourne:
False en cas d'échec de la connexion ou de l'ouverture de la page/fichier distant
String le contenu du fichier/page si l'argument [content] est à true
Float le temps de réponse du host et du fichier/page (si [content] est à false)
*/
function UrlGetContentsCurl(){
// traitement des arguments optionnels et des valeurs par défaut.
$arg_names = array('url', 'timeout', 'getContent', 'offset', 'maxLen');
$arg_passed = func_get_args();
$arg_nb = count($arg_passed);
if (!$arg_nb){
echo 'Il faut au moins un argument pour cette fonction';
return false;
}
$arg = array (
'url' => null,
'timeout' => ini_get('max_execution_time'),
'getContent'=> true,
'offset' => 0,
'maxLen' => null
);
foreach ($arg_passed as $k=>$v){
$arg[$arg_names[$k]] = $v;
}
// connexion CURL et retour du résultat
$ch = curl_init($arg['url']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_RESUME_FROM, $arg['offset']);
curl_setopt($ch, CURLOPT_TIMEOUT, $arg['timeout']);
$resultat = curl_exec($ch);
$elapsed = curl_getinfo ($ch, CURLINFO_TOTAL_TIME);
$CurlErr = curl_error($ch);
curl_close($ch);
if ($CurlErr) {
echo $CurlErr;
return false;
}elseif ($arg['getContent']){
if ($arg['maxLen']){
return substr($resultat, 0, $arg['maxLen']);
}else{
return $resultat;
}
}
return $elapsed;
}
Exemples d'utilisation$url = 'http://www.rfc-editor.org/rfc/rfc2606.txt';
$timeout = 2;
$getContent = true;
$offset = 0;
$maxLen = 50;
echo UrlGetContentsCurl($url, $timeout, $getContent, $offset, $maxLen);
Retournera les 50 premiers caractères:
Code : Tout sélectionner
Network Working Group$url = 'http://www.rfc-editor.org/rfc/rfc2606.txt';
$timeout = 2;
$getContent = true;
$offset = 50;
$maxLen = 50;
echo UrlGetContentsCurl($url, $timeout, $getContent, $offset, $maxLen);
Retourne, bien entendu, les 50 caractères suivants:
Code : Tout sélectionner
D. Eastlake Request for Comments: 26$url = 'http://www.rfc-editor.org/rfc/rfc2606.txt';
$timeout = 2;
$getContent = true;
echo UrlGetContentsCurl($url, $timeout, $getContent);
//ou
echo UrlGetContentsCurl($url, $timeout);
// ou
echo UrlGetContentsCurl($url);
Retournont toute la page.$url = 'http://www.rfc-editor.org/rfc/rfc2606.txt';
$getContent = false;
echo UrlGetContentsCurl($url, $timeout,$getContent);
Retourne le temps de réponse du serveur et d'ouverture de la page (float):
Code : Tout sélectionner
0.521368026733Références:
http://php.belnet.be/manual/fr/ref.curl.php
http://php.belnet.be/manual/fr/ref.stream.php
http://curl.haxx.se/