PHP cURL vs file get contents


как эти два фрагмента кода отличаются при доступе к REST API?

$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');

и

$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);

Они оба дают один и тот же результат, судя по

print_r(json_decode($result))
3 90

3 ответа:

file_get_contents() Это простая отвертка. Отлично подходит для простых запросов GET, где заголовок, метод HTTP-запроса, тайм-аут, cookiejar, перенаправления и другие важные вещи не имеют значения.

fopen() С контекст потока или завить с setopt являются powerdrills с каждым битом и вариантом, который вы можете придумать.

в дополнение к этому, из-за некоторых недавних взломов веб-сайта нам пришлось больше защищать наши сайты. При этом мы обнаружили, что функции file_get_contents не работает, где curl все-таки будет работать.

Не 100%, но я считаю, что это php.возможно, настройка ini блокировала функции file_get_contents запрос.

; Disable allow_url_fopen for security reasons
allow_url_fopen = 0

в любом случае, наш код теперь работает с curl.

Это старая тема, но на моем последнем тесте на одном моем API, cURL быстрее и стабильнее. Иногда file_get_contents на больший запрос нужно более 5 секунд, когда cURL нужно только от 1,4 до 1,9 секунд, что в два раза быстрее.

Мне нужно добавить одну заметку об этом, что я просто отправляю GET и recive JSON content. Если вы правильно настроите cURL, у вас будет отличный ответ. Просто "скажите", чтобы свернуть то, что вам нужно отправить и что вам нужно получить, и все.

на ваш пример Я хотел бы сделать эту настройку:

$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);

этот запрос вернет данные через 0,01 секунды максимум