2013-06-30 12 views
12

मैंने घंटों की खोज की है और मैं यह नहीं समझ सकता कि PHP में 'स्ट्रीम संदर्भ' क्या है। मैं एक एपीआई का उपयोग करने की कोशिश कर रहा हूं और इसमें इस 'स्ट्रीम संदर्भ' का उपयोग करना शामिल है।स्ट्रीम संदर्भ - यह क्या है?

प्रलेखन कहते हैं:

एक संदर्भ मापदंडों और आवरण विशिष्ट विकल्प जो संशोधित करने या एक धारा के व्यवहार को बढ़ाने का एक सेट है।

  1. क्या एक पैरामीटर?
  2. 'एक रैपर के लिए विशिष्ट' विकल्प का क्या अर्थ है?
  3. क्या स्ट्रीम?

यहाँ कोड के बारे में मैं बात कर रहा हूँ है:

// Encode the credentials and create the stream context. 
$auth = base64_encode("$acctKey:$acctKey"); 
$data = array(
'http' => array(
'request_fulluri' => true, 
// ignore_errors can help debug – remove for production. This option added in PHP 5.2.10 
'ignore_errors' => true, 
'header' => "Authorization: Basic $auth") 
); 
$context = stream_context_create($data); 
// Get the response from Bing. 
$response = file_get_contents($requestUri, 0, $context); 
+0

आपको यहां कुछ स्पष्टीकरण मिलते हैं: http://php.net/manual/en/stream.contexts.php और http://www.php.net/manual/en/context.php में उपलब्ध विकल्प – mario

+1

हां मैंने इसे पढ़ा और मैंने इसे शुरुआती पोस्ट में उद्धृत किया। यह इन अवधारणाओं की व्याख्या नहीं करता है और इसमें उन दोनों लिंक शामिल हैं। PHP में – user2537201

+1

"स्ट्रीम" वर्चुअल फाइलें हैं। डिस्क पर किसी भौतिक फ़ाइल में उत्पन्न होने वाली कोई भी फ़ाइल एपीआई डेटा रीडिंग नेटवर्क कनेक्शन या आभासी संसाधन से नहीं आती है। और स्ट्रीम केवल उन नेटवर्क स्रोतों को फ़ाइल हैंडल पर मैप किए जाते हैं। – mario

उत्तर

5
  1. संदर्भ कि धारा के गुणों को संशोधित करता है की एक पैरामीटर।

  2. विकल्प जो भी रैपर स्ट्रीम का उपयोग कर रहे हैं, के लिए विशिष्ट हैं। इन के उदाहरण फ़ाइलें, सभी विभिन्न php:// यूआरआई में शामिल हैं, HTTP आवरण (जैसे कि जब आप file_get_contents('http://example.com') करते हैं - यह एक ही बात file_get_contents('some-file.txt') के रूप में नहीं है)

  3. किसी भी स्ट्रीम!

इस मामले में, धारा संदर्भ file_get_contents को पारित कर दिया है कि प्राधिकरण शीर्षक और आवरण कि file_get_contents की अनुमति देता है HTTP URL को से सामग्री प्राप्त करने के लिए करने के लिए उन विकल्पों को भेजने के लिए यह बताने के लिए।

आप HTTP संदर्भ विकल्प on the PHP website की एक सूची पा सकते हैं।

+0

लेकिन यहां स्ट्रीम क्या है और यह 'स्ट्रीम' कैसी है? एक संदर्भ क्या है और पैरामीटर संशोधित 'संदर्भ' क्या है? – user2537201

+0

@ user2537201 क्या आपने प्रलेखन पढ़ा है? http://www.php.net/manual/pt_BR/stream.contexts.php – hek2mgl

+2

@ user2537201: यहां स्ट्रीम HTTP स्ट्रीम है जिसका उपयोग आप जो भी यूआरएल 'file_get_contents' पास करते हैं, अनुरोध करने के लिए किया जाता है। संदर्भ यह है कि प्रवाह कैसे व्यवहार करता है बदलने के लिए पैरामीटर रखता है। यह सिर्फ स्ट्रीम के लिए गुणों का एक सेट है। – Ryan

1
  1. http, request_fulluri, ignore_errors, हेडर सभी पैरामीटर हैं। वे फ़ंक्शन के तरीके को बदलते हैं (इस मामले में file_get_contents) काम करता है।

  2. एक विकल्प जो एक रैपर के लिए विशिष्ट है 'http' - जैसा कि आप फ़ाइल सिस्टम फ़ाइल स्ट्रीम पर इसका उपयोग नहीं करेंगे क्योंकि यह लागू नहीं है।

  3. धारा, डेटा अपने आप जो तब होता है जब file_get_contents कनेक्शन खोलता के हस्तांतरण है सब कुछ, आदि हस्तांतरित कर देता है ...

+0

धन्यवाद लेकिन मुझे अभी भी # 3 नहीं मिलता है। सबसे पहले, स्ट्रीम का मतलब डेटा का हस्तांतरण 'है' है। डेटा के हस्तांतरण का क्या हिस्सा धारा है? दूसरा, डेटा 'स्वयं' से आपका क्या मतलब है? – user2537201

+1

PHP विभिन्न प्रोटोकॉल संचालन को संभालने के लिए रैपर का उपयोग करता है (चाहे वह फ़ाइल, http, FTP, आदि हो)।PHPs स्ट्रीम ऑब्जेक्ट्स अनिवार्य रूप से अंतर्निहित कोड हैं जो विभिन्न प्रोटोकॉल (http://www.php.net/manual/en/intro.stream.php) तक पहुंचते हैं। धारा (स्वयं अप्रासंगिक थी) अनिवार्य रूप से यह संयोग है कि डेटा बिंदु ए से बिंदु बी (http://en.wikipedia.org/wiki/Byte_stream) से बहती है। विशेष रूप से इस मामले में यह बिंदु ए से बिंग HTTP के माध्यम से है। –

4

यह मुझे कुछ समय लिया धारा संदर्भों विकल्प और PHP के रैपर को समझने के लिए । मैंने इस लेख के बारे में एक लेख लिखा था कि आखिरकार मुझे अपने मस्तिष्क को how to understand PHP stream contexts options and wrappers के आसपास लपेटने में मदद मिली। मुझे उम्मीद है यह मदद करेगा।

लाइन (स्ट्रीम किए गए डेटा) के नीचे जो कुछ भी आ रहा है उसे ठीक से संभालने के लिए, आपको विभिन्न प्रकार की वस्तुओं को पारित करने के लिए उचित कोड की आवश्यकता होगी (डेटा प्रकार)। प्रत्येक अलग-अलग प्रकार के डेटा प्रकार को संभालने के लिए उपकरण "पैरामीटर" हैं।

"संदर्भ" निर्धारित होता है कि क्या (धाराबद्ध) पास हो रहा है।तो "डेटा प्रकार" (आइटम की तरह) "पैरामीटर" (हैंडलिंग के लिए आवश्यक टूल) "अलग-अलग" संदर्भों (वस्तुओं के प्रकार) के लिए "स्ट्रीम किए गए" (पास किए गए) के लिए "बदल दिया जाता है)।

शब्द संदर्भ केवल इस तथ्य का संदर्भ देता है कि विभिन्न डेटा प्रकारों के लिए स्थिति अपने आवश्यक पैरामीटर के साथ अद्वितीय है।

PHP स्ट्रीम रैपर को यह जानने के लिए संदर्भ की आवश्यकता होगी कि डेटा प्रकार को संभालने के लिए किन पैरामीटर की आवश्यकता है।

+0

धन्यवाद! खेद है कि इसे अपडेट करने में इतना समय लगा। – LoveFineArt

+0

(एफवाईआई, मैंने यूआरएल परिवर्तन पर मेरी पुरानी टिप्पणी हटा दी।) –

संबंधित मुद्दे