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:
$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
$result = curl_exec($ch);
Esta solicitação retornará dados em no máximo 0,01 segundo
cURL
é capaz de muito mais do quefile_get_contents
. Isso deve ser o suficiente.