PHP cURL vs файл получить содержимое
как эти две части кода отличаются при доступе к API REST?
$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 ответов
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 second max