Aktueller Standort: Startseite> Neueste Artikel> Welche Daten kehrt die Funktion stream_context_get_options zurück? Detaillierte Beschreibung typischer Anwendungsszenarien und Rückgabewerte

Welche Daten kehrt die Funktion stream_context_get_options zurück? Detaillierte Beschreibung typischer Anwendungsszenarien und Rückgabewerte

gitbox 2025-08-24

1. Einführung in die Funktion Stream_context_get_options

Die Funktion Stream_Context_get_Options wird verwendet, um Optionen im angegebenen Stream -Kontext zu erhalten. Der Stream -Kontext ist ein von PHP bereitgestellter Mechanismus zur Konfiguration des Verhaltens von Streams. Wenn Sie beispielsweise Dateioperationen oder HTTP -Anforderungen ausführen, können Sie bestimmte Optionen (z. B. Proxy, Timeout, Authentifizierung usw.) festlegen, die normalerweise den Stream -Kontext übergeben werden.

Der Prototyp der Funktion lautet wie folgt:

 <span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">stream_context_get_options</span></span><span>(resource </span><span><span class="hljs-variable">$stream_or_context</span></span><span>);
</span></span>
  • $ stream_or_context : Dies ist ein offener Stream oder eine Stream -Kontextressource. Wenn es sich bei dem Einkommen um eine Stream -Ressource handelt, extrahiert sie automatisch Optionen aus dem Kontext des Streams.

2. Stream_context_get_options Rückgabewert

stream_context_get_options gibt ein assoziatives Array zurück. Dieses Array enthält alle Optionen im Zusammenhang mit dem Stream -Kontext. Die Schlüssel für jede Option sind normalerweise ein Protokolltyp (z. B. "HTTP", "FTP" usw.), und jeder Protokolltyp enthält relevante Einstellungen unten.

Kehre zum Format zurück

 <span><span><span class="hljs-keyword">array</span></span><span>(
    </span><span><span class="hljs-string">'Vertragsname'</span></span><span> =&gt; </span><span><span class="hljs-keyword">array</span></span><span>(
        </span><span><span class="hljs-string">'Optionen1'</span></span><span> =&gt; </span><span><span class="hljs-string">'Wert1'</span></span><span>,
        </span><span><span class="hljs-string">'Optionen2'</span></span><span> =&gt; </span><span><span class="hljs-string">'Wert2'</span></span><span>,
        ...
    ),
    ...
)
</span></span>

Wenn Sie beispielsweise einen Proxy und eine Auszeit für eine HTTP -Anforderung festlegen, sieht das zurückgegebene Array so aus:

 <span><span><span class="hljs-keyword">array</span></span><span>(
    </span><span><span class="hljs-string">'http'</span></span><span> =&gt; </span><span><span class="hljs-keyword">array</span></span><span>(
        </span><span><span class="hljs-string">'proxy'</span></span><span> =&gt; </span><span><span class="hljs-string">'tcp://proxy.example.com:8080'</span></span><span>,
        </span><span><span class="hljs-string">'timeout'</span></span><span> =&gt; </span><span><span class="hljs-number">30</span></span><span>,
    ),
)
</span></span>

Wenn keine Optionen festgelegt sind, ist das zurückgegebene Array ein leeres Array.

1. Typische Anwendungsszenarien

3.1 Erhalten Sie die Konfiguration des Stream -Kontextes

Ein typisches Szenario ist, wenn ein Strom von Dateien, HTTP -Anforderungen oder andere Protokolle betrieben wird. Das Programm muss möglicherweise überprüfen, ob die Konfiguration des Stream -Kontextes korrekt ist. Wenn Sie beispielsweise File_Get_Contents verwenden, um Remote -Dateien zu lesen, haben Sie möglicherweise einen HTTP -Proxy eingerichtet. Sie können Stream_Context_Get_Options verwenden, um die Proxy -Einstellungen für den aktuellen Kontext anzuzeigen:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>([
    </span><span><span class="hljs-string">'http'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'proxy'</span></span><span> =&gt; </span><span><span class="hljs-string">'tcp://proxy.example.com:8080'</span></span><span>,
        </span><span><span class="hljs-string">'timeout'</span></span><span> =&gt; </span><span><span class="hljs-number">60</span></span><span>
    ]
]);

</span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_get_options</span></span><span>(</span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Ausgabe:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [http] =&gt; </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
        (
            [proxy] =&gt; </span><span><span class="hljs-attr">tcp</span></span><span>://proxy.example.</span><span><span class="hljs-attr">com</span></span><span>:</span><span><span class="hljs-number">8080</span></span><span>
            [timeout] =&gt; </span><span><span class="hljs-number">60</span></span><span>
        )
)
</span></span>

Auf diese Weise können wir die Einstellungen im Stream -Kontext jederzeit überprüfen, um sicherzustellen, dass sie wie erwartet sind.

3.2 Debuggen und Protokollieren

Die Option zum Anzeigen des Flow -Kontextes hilft bei der Behebung von Problemen bei Debugging -Netzwerkanforderungen. Sie möchten beispielsweise bestätigen, dass die Proxy -Einstellungen, die Anforderungsheader oder die Timeout -Konfiguration korrekt sind. Wenn das Programm auf Netzwerkprobleme stößt, können Sie das Problem schnell finden, wenn Sie die Konfigurationsinformationen des Streaming -Kontextes anzeigen. Zum Beispiel ist beim Senden von HTTP -Anforderungen der Proxy möglicherweise nicht zugänglich oder die Zeitüberschreitungseinstellung ist zu niedrig, und Sie können die Konfiguration zur Bestätigung ausdrucken.

3.3 Standardkonfiguration verwandeln

In einigen Fällen möchten Sie möglicherweise bestimmte Optionen im Stream -Kontext ändern und diese geänderten Optionen dynamisch abrufen. Wenn Sie beispielsweise die Proxy -Einstellungen in mehreren Anforderungen ändern müssen, können Sie die aktuelle Konfiguration über stream_context_get_options erhalten und dadurch Änderungen vornehmen. Dadurch wird jedes Mal alle Optionen zurückgesetzt und redundante Konfigurationen verringert.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>([
    </span><span><span class="hljs-string">'http'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'timeout'</span></span><span> =&gt; </span><span><span class="hljs-number">30</span></span><span>
    ]
]);

</span><span><span class="hljs-comment">// Erhalten Sie die aktuelle Konfiguration</span></span><span>
</span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_get_options</span></span><span>(</span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-variable">$options</span></span><span>[</span><span><span class="hljs-string">'http'</span></span><span>][</span><span><span class="hljs-string">'timeout'</span></span><span>] = </span><span><span class="hljs-number">60</span></span><span>; </span><span><span class="hljs-comment">// Ändern Sie die Zeitüberschreitungseinstellung</span></span><span>

</span><span><span class="hljs-comment">// 使用修改后的Optionen进行操作</span></span><span>
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>([</span><span><span class="hljs-string">'http'</span></span><span> =&gt; </span><span><span class="hljs-variable">$options</span></span><span>[</span><span><span class="hljs-string">'http'</span></span><span>]]);
</span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'http://example.com'</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3.4 Mit anderen Stream -Funktionen zusammenarbeiten

stream_context_get_options werden häufig mit anderen Stream-bezogenen Funktionen wie Stream_Socket_Client , Fopen , File_Get_Contents usw. verwendet. Zum Beispiel können Sie nach dem Öffnen einer FTP-Verbindung Stream_Context_Get_Options verwenden, um die aktuelle FTP-Konfiguration zu erhalten:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>([
    </span><span><span class="hljs-string">'ftp'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'timeout'</span></span><span> =&gt; </span><span><span class="hljs-number">60</span></span><span>,
    ]
]);

</span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'ftp://example.com/file.txt'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-variable">$context</span></span><span>);

</span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_get_options</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4.. Dinge zu beachten

  • Stream_Context_get_Options gilt nur für Kontextressourcen, die über Stream_Context_create oder auf andere Weise erstellt wurden. Wenn es keinen Kontext oder einen Stream ohne Kontext gibt, gibt es ein leeres Array zurück.

  • Das zurückgegebene Optionsarray wird durch Protokoll als Schlüssel klassifiziert. Das HTTP -Protokoll verfügt beispielsweise über einen Satz von Optionen und das FTP -Protokoll hat einen anderen Satz von Optionen, sodass Sie die entsprechenden Operationen gemäß dem Protokolltyp ausführen sollten.