2013-06-30 13 views
12

Ich habe stundenlang gesucht und ich kann nicht herausfinden, was ein 'Stream-Kontext' in PHP ist. Ich versuche eine API zu verwenden und es beinhaltet diesen "Stream-Kontext".Stream-Kontext in PHP - was ist das?

Die Dokumentation sagt:

Ein Kontext ein Satz von Parametern und Wrapper-spezifischen Optionen, die das Verhalten eines Stroms zu ändern oder verbessern.

  1. Ein Parameter von was?
  2. Was bedeutet eine Option, die spezifisch für einen Wrapper ist?
  3. Welcher Strom?

Hier ist der Code ich spreche:

// 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

Hier finden Sie einige Erklärungen: http://php.net/manual/en/stream.contexts.php und die verfügbaren Optionen in http://www.php.net/manual/en/context.php – mario

+1

Ja, ich las es und ich zitierte es im ersten Post. Es erklärt diese Konzepte nicht und schließt diese beiden Links ein. – user2537201

+1

"Streams" in PHP sind virtuelle Dateien. Das Lesen von Datei-API-Daten, die nicht von einer physischen Datei auf der Festplatte stammen, stammt von einer Netzwerkverbindung oder virtuellen Ressource. Und Streams sind einfach jene Netzwerkquellen, die auf Dateihandles abgebildet sind. – mario

Antwort

5
  1. Ein Parameter des Kontexts, der die Eigenschaften des Stroms ändert.

  2. Die Optionen sind spezifisch für alle Wrapper, die der Stream verwendet. Beispiele hierfür sind Dateien, die verschiedenen php:// URIs, die HTTP-Wrapper (wie wenn Sie tun file_get_contents('http://example.com') - es ist nicht das Gleiche wie file_get_contents('some-file.txt'))

  3. Jeder Strom!

In diesem Fall wird der Stream Kontext zu file_get_contents reicht es zu sagen, dass die Genehmigung Header und die Optionen an den Wrapper zu senden, die file_get_contents zu erhalten Inhalt von HTTP-URLs ermöglicht.

Sie können eine Liste der HTTP-Kontextoptionen on the PHP website finden.

+0

Aber was ist der Stream hier und wie ist es ein "Stream"? Was ist ein Kontext und was ist der "Kontext", den der Parameter ändert? – user2537201

+0

@ user2537201 Haben Sie die Dokumentation gelesen? http://www.php.net/manual/pt_BR/stream.contexts.php – hek2mgl

+2

@ user2537201: Der Stream hier ist der HTTP-Stream, der verwendet wird, um die URL anzufordern, die Sie 'file_get_contents' übergeben. Der Kontext enthält die Parameter zum Ändern des Verhaltens des Streams. Es ist nur eine Reihe von Eigenschaften für den Stream. – Ryan

1
  1. HTTP, request_fulluri, ignore_errors, Header sind alle Parameter. Sie ändern die Funktionsweise der Funktion (file_get_contents in diesem Fall).

  2. Eine Option, die für einen Wrapper spezifisch ist, ist etwas wie "http" - , das Sie nicht für einen Dateisystemdateistream verwenden würden, da es nicht anwendbar ist.

  3. Der Strom ist die Übertragung von Daten selbst, die auftritt, wenn file_get_contents die Verbindung öffnet, überträgt alles, etc ...

+0

Danke, aber ich bekomme immer noch nicht # 3. Vor allem, was meinst du mit dem Stream "ist" die Übertragung von Daten. Welcher Teil der Datenübertragung ist der Stream? Zweitens, was meinst du mit den Daten "selbst"? – user2537201

+1

PHP verwendet Wrapper, um verschiedene Protokolloperationen (ob Datei, HTTP, FTP usw.) zu verarbeiten.PHPs stream objects sind im Wesentlichen der zugrunde liegende Code, der auf verschiedene Protokolle zugreift (http://www.php.net/manual/en/intro.stream.php). Der Stream (selbst war irrelevant) ist im Wesentlichen der Kanal, dass die Daten von Punkt A zu Punkt B (http://en.wikipedia.org/wiki/Byte_stream) fließt. Speziell in diesem Fall ist es von Punkt A zu Bing über HTTP. –

4

Es dauerte eine Weile, die Stream Kontext Optionen und Wrapper von PHP zu verstehen . Ich schrieb einen Artikel darüber, was mir half, mein Gehirn endlich um how to understand PHP stream contexts options and wrappers zu wickeln. Ich hoffe, es hilft.

Um die Datenströme (gestreamte Daten) korrekt verarbeiten zu können, benötigen Sie den entsprechenden Code, um die verschiedenen Arten von übergebenen Daten (Datentypen) zu verarbeiten. Die Werkzeuge für die Handhabung der verschiedenen Arten von Datentypen sind die "Parameter".

Der "Kontext" wird von dem bestimmt, was weitergeleitet wird (gestreamt).Wenn also verschiedene "Kontexte" (Arten von Elementen) durch die "Parameter" (benötigte Werkzeuge zur Handhabung) "gestreamt" werden, ändert sich der "Datentyp" (Art des Elements).

Der Begriff Kontext verweist einfach auf die Tatsache, dass die Situation für verschiedene Datentypen mit ihren eigenen erforderlichen Parametern einzigartig ist.

Der PHP-Stream-Wrapper würde einen Kontext benötigen, um zu wissen, welche Parameter zur Handhabung des Datentyps benötigt werden.

+0

Danke! Es hat so lange gedauert, bis es aktualisiert wurde. – LoveFineArt

+0

(Bitte beachten Sie, dass ich meinen veralteten Kommentar zur URL-Änderung gelöscht habe.) –