Dans PHP, Stream est un mécanisme qui traite l'entrée et la sortie des fichiers, des données, etc. À l'aide de flux, nous pouvons traiter des fichiers, des demandes de réseau et même des données en mémoire. Pour analyser profondément le comportement d'un flux, nous devons généralement obtenir les détails du flux. Cet article se concentrera sur la façon d'utiliser Stream_Context_get_Options et Stream_get_Meta_Data pour analyser les informations détaillées du flux.
Dans PHP, un contexte de flux est une structure de données contenant les informations de configuration du fonctionnement du flux. Il peut être créé via la fonction Stream_Context_Create () et est utilisé pour configurer certaines options lors de l'ouverture du flux (tel que l'en-tête de demande HTTP, les paramètres de proxy, etc.).
La fonction Stream_Context_get_Options () est utilisée pour obtenir toutes les options dans un contexte de flux créé. Ceci est particulièrement utile pour le débogage des configurations de flux, car il vous permet de visualiser des paramètres spécifiques passés lors de la création d'un flux.
<?php
// Créer un contexte de flux,installation HTTP En-tête de demande
$options = [
'http' => [
'header' => 'User-Agent: PHP/7.4'
]
];
$context = stream_context_create($options);
// Options pour obtenir et afficher le contexte
$options = stream_context_get_options($context);
print_r($options);
?>
Le résultat de la sortie sera:
Array
(
[http] => Array
(
[header] => User-Agent: PHP/7.4
)
)
La fonction Stream_get_Meta_Data () est utilisée pour obtenir les métadonnées du flux. Il renvoie un tableau contenant des informations sur l'état du flux, y compris l'état du flux, les informations d'erreur, qu'elle soit écrivative, etc.
<?php
// Ouvrez un flux de fichiers
$file = fopen("example.txt", "r");
// Obtenez les métadonnées du ruisseau
$metaData = stream_get_meta_data($file);
print_r($metaData);
// Fermez le flux de fichiers
fclose($file);
?>
La sortie peut être la suivante:
Array
(
[timed_out] =>
[blocked] =>
[eof] =>
[unread_bytes] => 0
[stream_type] => STDIO
[wrapper_type] => plainfile
[wrapper_data] =>
[stream_type] => STDIO
)
Pour analyser les détails du flux, nous devons généralement utiliser Stream_Context_get_Options et Stream_get_Meta_Data ensemble. Par exemple, lors de la création d'une demande HTTP, vous pouvez afficher les métadonnées du flux et les informations de configuration connexes.
Voici un exemple d'obtention du contenu Web via une demande de réseau et d'analyse des flux combinés avec des options de contexte et des métadonnées:
<?php
// ConfigurationHTTPDemander des options
$options = [
'http' => [
'method' => 'GET',
'header' => 'User-Agent: PHP/7.4'
]
];
$context = stream_context_create($options);
// Ouvrez le flux et envoyez la demande
$url = "http://m66.net/example"; // Remplacer le nom de domaine par m66.net
$stream = fopen($url, 'r', false, $context);
// Obtenez les métadonnées du ruisseau
$metaData = stream_get_meta_data($stream);
print_r($metaData);
// Options pour obtenir le contexte
$contextOptions = stream_context_get_options($context);
print_r($contextOptions);
// Fermer le ruisseau
fclose($stream);
?>
La sortie peut être:
Métadonnées des ruisseaux:
Array
(
[timed_out] =>
[blocked] =>
[eof] => 1
[unread_bytes] => 0
[stream_type] => http
[wrapper_type] => http
[wrapper_data] => HTTP/1.1 200 OK
[stream_type] => http
)
Options de contexte:
Array
(
[http] => Array
(
[method] => GET
[header] => User-Agent: PHP/7.4
)
)
En combinant les fonctions Stream_Context_get_Options et Stream_get_Meta_Data , les développeurs peuvent facilement afficher des informations détaillées de configuration et des métadonnées du flux. Cette méthode peut vous aider à diagnostiquer l'état de configuration de la demande ou le flux de débogage lors de la création de demandes de réseau.
Ces deux méthodes ne sont pas limitées aux flux HTTP, mais peuvent également être utilisés pour d'autres types de flux (tels que les flux de fichiers, les flux de mémoire, etc.). Avec ces outils en main, vous pouvez mieux analyser et contrôler le comportement de votre flux.