Charger un fichier distant avec Curl (Scriptol ou PHP

cURL est une librarie de transfert de fichiers sur Internet ou autre réseau, permettant de les envoyer ou les recevoir selon tous les protocoles actuels (http, ftp, ldap).

C'est une alternative à fsockopen. Il est implémenté en PHP et utilisable aussi en C et C++.

  1. Tester la disponibilité de curl sur un hébergement web.
  2. Activer cURL sous XAMPP.
  3. Utiliser cURL avec Scriptol
  4. Utiliser cURL avec PHP
  5. Utiliser cURL avec un lecteur RSS.

1) Tester la disponibilité de cURL sur un hébergement web

La fonction phpinfo() affiche les libraires actives sur un serveur.
Installer le script suivant sur votre hébergement:

<?php  echo phpinfo();?>

Si cURL est activé, une table comme celle-ci sera affichée:

2) Activer cURL sous le serveur local (par exemple XAMPP)

cURL n'est pas activé par défault dans PHP, il faut le faire manuellement. Le menu dispose d'une commande pour ce faire, mais elle n'agit que sur la configuration de PHP seule et non dans le répertoire Apache.
Sur Xampp il faut modifier le fichier PHP.INI des deux:

c:\xampp\php\php5.3.0\php.ini
c:\xampp\apache\Apache2.2.11\bin\php.ini 

La ligne suivante doit être dé-commentée dans les deux fichiers:

extension=php_curl.dll 

Vérifier que vous avez les libraires libeay32.dll et ssleay32.dll.

3) Utiliser cURL avec Scriptol

Pour utiliser cURL avec la scriptol qui compile en PHP, il faut ajouter un fichier de définition de variables et fonctions. Cette interface aux fonctions PHP est disponible dans l'archive (voir en bas de page):

extern
dyn curl_init(cstring curlopt = null)
boolean curl_setopt(dyn, int, dyn)
dyn curl_exec(dyn)
void curl_close(dyn)
array curl_version()
constant int CURLOPT_URL // pass URL
constant int CURLOPT_CONNECTTIMEOUT // limit waiting time forever
constant int CURLOPT_UPLOAD // send file
/extern

Il y a de nombreuses autres variables, que l'on définira soi-même en fonction de ses besoins avec des lignes comme ceci:

constant int CURLOPT_xxx

Deux scripts sont inclus dans l'archive:

curl-check.sol : vérifie la disponibilité de cURL, affiche la version et les fonctions disponibles.
curl-demo.sol : lit un flux RSS sur un serveur distant.

4) Utiliser cURL avec PHP

On utilise cURL en ouvrant une session avec curl_init() et en indiquant le type d'opération à réaliser avec curl_setopt().

curl_exec() lance l'exécution et la session est close avec curl_close().

Le manuel PHP décrit avec des exemples l'utilisation de cURL et indique toutes les options possibles.

5) Utiliser cURL avec un lecteur RSS

Comme cela est apparu dans le forum, il arrive que le serveur d'un hébergement mutualisé ne permette pas l'accès à un autre site, et si l'on veut intégrer un flux RSS, ce qui est impossible avec DOMDocument->load ou fsockopen devient possible avec cURL.

On remplacera cette ligne dans la fonction RSS_retrieve:

$doc->load($url);

par :

$hnd = curl_init();
curl_setopt($hnd, CURLOPT_CONNECTTIMEOUT, 300);
curl_setopt($hnd, CURLOPT_URL, $url);
$data = curl_exec($hnd);
curl_close($hnd); $doc->loadXML($data);

Voir le Lecteur RSS.

Télécharger l'interface cURL et démos.