(résolu] Curl, mettre en cache une interogation

Eléphant du PHP | 256 Messages

14 nov. 2011, 16:18

Bonjour,

J'utilise Curl pour appeler une requête. Or, l'Api du Provider demande que les requêtes ne soient pas supérieures à cinq minutes. Donc, "comment mettre en cache" ou plus simplement "empêcher" une nouvelle requête pendant ce délai ?

Je ne tiens pas à stocker les données pendant cinq minutes dans une table ou un fichier texte, car ce "raffinement" me semble disproportionné.

J'ai testé...
curl_setopt($ch, CURLOPT_URL, "https://api... );
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); /* Première hypothèse */
curl_setopt($ch, CURLOPT_TIMEOUT, 300); /* Deuxième hypothèse */
mais un var_dump semble indiquer que l'interrogation n'est pas mise en cache.

Merci pour votre aide. :D

Cordialement,

Gaspard

Eléphant du PHP | 256 Messages

14 nov. 2011, 19:02

...

Tant pis, vive une mise en cache rudimentaire....
$expire = time() - (60 * 5);
if(file_exists($cache) && filemtime($cache) > $expire):
	readfile($cache);
else:
	ob_start();
        // La requête avec Curl est ici 
        $content = ob_get_contents();
        ob_end_clean(); 
        file_put_contents($cache, $content);
        echo $content;
endif;
... si ça intéresse un jour un lecteur de cet honorable forum. :mrgreen:

Cordialement,

Gaspard