PHP/CURL et TimeOut

Comment éviter les problèmes de TimeOut lors de l’exécution d’un appel CURL en PHP.

2 paramètres sont à prendre en compte :

  • Le temps pour établir la connexion avec le serveur
  • Le temps de la connexion (une fois celle-ci établie)

L’API CURL PHP répond à ce problème :

  • CURLOPT_CONNECTTIMEOUT     The number of seconds to wait while trying to connect. Use 0 to wait indefinitely.
  • CURLOPT_TIMEOUT – The maximum number of seconds to allow cURL functions to execute.
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,5); 
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds
$response = curl_exec($ch);
curl_close($ch)

Il ne faut oublier aussi de surcharger la valeur de temps d’exécution maxima du script PHP incluant ce code, sinon ce dernier stoppera le script avant la fin du de la connexion.


set_time_limit(0);// to infinity for example

PS : n’oubliez pas d’installer CURL et son Wrapper PHP.
Exemple Debian/Ubuntu


apt-get update && apt-get dist-upgrade
apt-get install curl php5-curl