En quoi ces deux morceaux de code diffèrent-ils lors de l'accès à une API REST?
$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
et
$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
Ils produisent tous deux le même résultat, à en juger par
print_r(json_decode($result))
php
curl
file-get-contents
Salvador Dali
la source
la source
cURL
est capable de bien plus quefile_get_contents
. Cela devrait suffire.Réponses:
file_get_contents()
est un simple tournevis. Idéal pour les requêtes GET simples où l'en-tête, la méthode de requête HTTP, le délai d'expiration, le cookiejar, les redirections et d'autres choses importantes n'ont pas d'importance.fopen()
avec un contexte de flux ou cURL avec setopt sont des powerdrills avec tous les bits et toutes les options auxquels vous pouvez penser.la source
file_get_contents
permet également de définir le contexte, ce qui signifie que vous pouvez définir les champs d'en-tête comme vous le souhaitez.De plus, en raison de certains hacks récents de sites Web, nous avons dû sécuriser davantage nos sites. Ce faisant, nous avons découvert que file_get_contents ne fonctionnait pas, là où curl fonctionnerait toujours.
Pas à 100%, mais je pense que ce paramètre php.ini a peut-être bloqué la requête file_get_contents .
Dans tous les cas, notre code fonctionne désormais avec curl .
la source
file_get_contents
fautallow_url_fopen
être honnête.file_get_contents()
raison de nombreux exploits connus pour utiliser la fonction. cURL est la fonction que les gens devraient utiliser dans le code maintenant.allow_url_fopen
parce qu'elles se trompent en quelque sorteallow_url_include
.allow_url_fopen
etfile_get_contents
sont bons à utiliser.file_get_contents()
C'est un vieux sujet mais lors de mon dernier test sur une de mes API, cURL est plus rapide et plus stable. Parfois, file_get_contents sur une demande plus importante a besoin de plus de 5 secondes alors que cURL n'a besoin que de 1,4 à 1,9 secondes, ce qui est le double plus rapide.
Je dois ajouter une note à ce sujet que je viens d'envoyer GET et de recevoir du contenu JSON. Si vous configurez correctement cURL, vous aurez une excellente réponse. Il suffit de "dire" à cURL ce que vous devez envoyer et ce que vous devez recevoir et c'est tout.
Sur votre exemple, je voudrais faire cette configuration:
Cette demande renverra les données en 0,01 seconde maximum
la source
file_get_contents
je viens de faire quelques appels API pour confirmer. 0,8 seconde pourfile_get_contents
& 0,49 seconde pourcurl
(3 appels API)