Como essas duas partes do código diferem ao acessar uma API REST?
$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
e
$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);
Ambos produzem o mesmo resultado, a julgar por
print_r(json_decode($result))
php
curl
file-get-contents
Salvador Dalí
fonte
fonte
cURL
é capaz de muito mais do quefile_get_contents
. Isso deve ser o suficiente.Respostas:
file_get_contents()
é uma chave de fenda simples. Excelente para solicitações GET simples em que o cabeçalho, o método de solicitação HTTP, o tempo limite, o cookiejar, os redirecionamentos e outras coisas importantes não importam.fopen()
com um contexto de fluxo ou cURL com setopt são powerdrills com cada bit e opção que você pode pensar.fonte
file_get_contents
permite também definir o contexto, o que significa que você pode definir os campos do cabeçalho como desejar.Além disso, devido a alguns hacks recentes de sites, tivemos que proteger mais nossos sites. Ao fazer isso, descobrimos que file_get_contents não funcionou, onde curl ainda funcionaria.
Não 100%, mas acredito que essa configuração do php.ini pode estar bloqueando a solicitação file_get_contents .
De qualquer forma, nosso código agora funciona com curl .
fonte
file_get_contents
requerallow_url_fopen
ser verdadeiro.file_get_contents()
devido a muitos exploits que usam a função. cURL é a função que as pessoas devem usar no código agora.allow_url_fopen
porque meio que confundem comallow_url_include
.allow_url_fopen
efile_get_contents
estão bem para usar.file_get_contents()
Este é um tópico antigo, mas no meu último teste em uma API, cURL é mais rápido e estável. Às vezes, file_get_contents em solicitações maiores precisam de mais de 5 segundos, quando cURL precisa de apenas 1,4 a 1,9 segundos, o que é o dobro mais rápido.
Eu preciso adicionar uma observação sobre isso que acabei de enviar GET e receber conteúdo JSON. Se você configurar o cURL corretamente, terá uma ótima resposta. Apenas "diga" ao cURL o que você precisa enviar e o que você precisa receber e pronto.
No seu exemplo, gostaria de fazer esta configuração:
Esta solicitação retornará dados em no máximo 0,01 segundo
fonte
file_get_contents
que acabei de fazer algumas chamadas de API para confirmar. 0,8 segundos parafile_get_contents
& 0,49 segundos paracurl
(3 chamadas de API)