2012-10-22 18 views
6

HTTP अनुरोध करने के लिए PHP में file_get_contents या curl का उपयोग किया जाना चाहिए?file_get_contents या PHP में कर्ल?

यदि 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); 
+2

कर्ल file_get_contents() की तुलना में और भी बहुत कुछ कर सकते हैं, लेकिन आप इसे कुछ नहीं चाहिए, तो करता है, तो सरल दृष्टिकोण ले लो। –

+1

मैंने सुना है कि, file_get_contents का उपयोग करके कुछ सुरक्षा खतरे हैं और इसलिए कुछ सर्वर PHP में इस सुविधा को अक्षम करते हैं। – ankur140290

+0

कहाँ सुना? उद्धरण कृपया। कुछ मेजबान बाहरी फाइलें प्राप्त करने के सभी तरीकों को अक्षम करते हैं, अगर file_get_contents अक्षम हैं, तो आप सुनिश्चित हैं कि कर्ल भी होगा। –

उत्तर

1

आपकी जानकारी के लिए, कर्ल आप अधिक विकल्प हैं और प्राप्त/POST विधि का उपयोग कर सकते हैं और पैरामीटर भेजें।

और file_get_contents आपके पास GET/POST पैरामीटर प्राप्त करने के लिए कम विकल्प होंगे।

आशा इस मदद करता है ...

12

सभी cURL पहले विकल्पों को सेट करने का एक बहुत कुछ है। आप वास्तव में किसी भी विकल्प को सेट कर सकते हैं - कई समर्थित प्रोटोकॉल, फ़ाइल अपलोड, कुकीज़, प्रॉक्सी और अधिक।

file_get_contents() वास्तव में फ़ाइल प्राप्त करता है या पोस्ट करता है और नतीजा होता है।

हालांकि: मैं कुछ एपीआई की कोशिश की और कुछ "मानदंड" किया:

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

औसत मामले file_get_contents से 3-10 गुना तेजी से मेरे मामले में था। api.local एक कैश JSON फ़ाइल के साथ responeded - लगभग 600kb।

मुझे नहीं लगता कि यह संयोग था - लेकिन आप इसे सटीक रूप से माप नहीं सकते हैं, क्योंकि नेटवर्क और प्रतिक्रिया समय उनके वर्तमान लोड/नेटवर्क की गति/प्रतिक्रिया समय आदि के आधार पर बहुत भिन्न होते हैं। (स्थानीय नेटवर्क प्रभाव नहीं बदलेगा - लोड & यातायात भी होगा)

लेकिन कुछ उपयोग मामलों के लिए, यह भी हो सकता है कि file_get_contents वास्तव में तेज़ है।

6

CurlFile_get_contents तेज है। मैंने अभी कुछ त्वरित बेंच-मार्किंग किया है।

Google ला रहा है।file_get_contents का उपयोग कर कॉम (सेकंड में) ले लिया:

2.31319094 
2.30374217 
2.21512604 
3.30553889 
2.30124092 

कर्ल ले लिया:

0.68719101 
0.64675593 
0.64326 
0.81983113 
0.63956594 
+0

क्या ये टेस्ट्रेसल्ट (सेकेंड में) हैं जिन्हें आपने वास्तव में पोस्ट किया है परिणाम जो आपको * आपके * परीक्षण में मिला है? अंतर थोड़ा बड़ा लगता है .. आप किस PHP संस्करण का उपयोग कर रहे हैं? – GitaarLAB