file_get_contents или curl в php?

Какое из file_get_contents или curl должно использоваться в PHP для запроса HTTP?

Если file_get_contents выполнит эту работу, нужно ли использовать curl ? Использование curl похоже, требует больше строк.

например:

свернуться:

 $ch = curl_init('http://www.website.com/myfile.php'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $content); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = curl_exec ($ch); curl_close ($ch); 

file_get_contents:

 $output = file_get_contents('http://www.website.com/myfile.php'.$content); 

Прежде всего, у cURL есть много вариантов для установки. Вы действительно можете установить любой параметр, который вам нужен – многие поддерживаемые протоколы, файлы-добавления, файлы cookie, прокси и многое другое.

file_get_contents() действительно просто ПОЛУЧИТ или ПОЧТОВЫЙ файл и имеет результат.

Однако: я попробовал некоторые API и сделал некоторые «бенчмаркинга»:

cURL было намного быстрее, чем file_get_contents
Просто попробуйте с вашим терминалом: time php curl.php

curl.php:

 <?php $ch = curl_init(); $options = [ CURLOPT_SSL_VERIFYPEER => false, CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => 'http://api.local/all' ]; curl_setopt_array($ch, $options); $data = json_decode(curl_exec($ch)); curl_close($ch); 

fgc.php

 <?php $data = json_decode(file_get_contents('http://api.local/all')); 

Усредненный cURL в моем случае был в 3-10 раз быстрее, чем file_get_contents . Api.local обрабатывался с кешированным файлом JSON – около 600 КБ.

Я не думаю, что это совпадение. Но вы не можете измерить это точно, потому что время сети и время ответа сильно различаются, основываясь на их текущем времени загрузки / сети / времени ответа и т. Д. (Локальные сети не изменятся эффект – там будет загрузка и трафик)

Но для некоторых случаев использования также может быть, что file_get_contents на самом деле быстрее.

Curl быстрее, чем File_get_contents . Я просто немного поработал над этим.

Приобретение google.com с использованием file_get_contents заняло (в секундах):

 2.31319094 2.30374217 2.21512604 3.30553889 2.30124092 

CURL взял:

 0.68719101 0.64675593 0.64326 0.81983113 0.63956594 

Для вашей информации, завиток, вы можете позволить иметь больше опций и использовать метод GET / POST и отправлять параметры.

И у file_get_contents будут меньше параметров для параметров GET / POST.

Надеюсь это поможет…