Dans PHP, Stream est un mécanisme de traitement des données important, qui est largement utilisé dans le traitement de fichiers, la communication réseau et d'autres champs. Le filtre de flux fait partie du flux PHP et est utilisé pour prétraiter les données avant de diffuser les données, telles que la conversion de codage, la compression et d'autres opérations. stream_get_filters et stream_get_meta_data sont deux fonctions très utiles qui aident les développeurs à afficher et à gérer l'état des filtres de flux. Cet article présentera comment utiliser ces deux fonctions en combinaison pour vérifier l'application des filtres à débit.
Un filtre de flux est un mécanisme qui traite les données du flux avant de passer par le flux. PHP fournit une variété de filtres de flux intégrés, tels que la compression des données, la conversion de codage des caractères, le chiffrement des données, etc. Les développeurs peuvent également personnaliser des filtres pour répondre aux besoins spécifiques.
La fonction Stream_get_Filters est utilisée pour renvoyer tous les filtres de flux disponibles. Il peut aider les développeurs à comprendre quels filtres de flux peuvent être utilisés dans l'environnement PHP actuel. Voici une utilisation simple de cette fonction:
$filters = stream_get_filters();
print_r($filters);
Ce code publie un tableau contenant tous les filtres de flux actuellement disponibles. Le résultat retourné peut être similaire à:
Array
(
[0] => zlib.inflate
[1] => zlib.deflate
[2] => string.rot13
[3] => convert.iconv.*
)
La fonction Stream_get_Meta_Data est utilisée pour obtenir des métadonnées liées au flux. Les métadonnées contient les informations d'état du flux, y compris le type de flux, qu'il s'agisse d'un flux enveloppé par un filtre et d'autres caractéristiques du flux. Nous pouvons utiliser cette fonction pour voir si le flux utilise certains filtres.
Voici un exemple de code pour voir les métadonnées d'un flux à l'aide de Stream_get_Meta_Data :
<?php
$stream = fopen('https://gitbox.net/somefile.txt', 'r');
$metaData = stream_get_meta_data($stream);
print_r($metaData);
fclose($stream);
?>
Nous pouvons utiliser stream_get_filters et stream_get_meta_data pour afficher l'état du filtre d'un certain flux. Par exemple, si nous ouvrons une URL distante et appliquons un filtre, nous pouvons vérifier si le flux contient un filtre et voir comment fonctionne le filtre.
Voici un exemple pratique qui montre comment vérifier si un flux a un filtre spécifique appliqué lors de l'ouverture d'un flux de fichiers:
<?php
// Obtenez tous les filtres de flux disponibles
$filters = stream_get_filters();
// À distance ouverteURLEt appliquer des filtres
$context = stream_context_create([
'http' => [
'header' => 'User-Agent: PHP'
]
]);
$stream = fopen('https://gitbox.net/somefile.txt', 'r', false, $context);
// Obtenez les métadonnées du ruisseau
$metaData = stream_get_meta_data($stream);
// Métadonnées du flux de sortie
print_r($metaData);
// Vérifiez si un filtre spécifique est appliqué au flux
if (in_array('convert.iconv.*', $filters)) {
echo "Ce flux prend en charge le filtre de conversion de codage des caractères。\n";
} else {
echo "Ce flux ne prend pas en charge le filtre de conversion de codage des caractères。\n";
}
// Fermer le ruisseau
fclose($stream);
?>
Obtenez la liste des filtres : utilisez d'abord Stream_get_Filters pour obtenir tous les filtres de flux pris en charge par l'environnement PHP actuel.
Ouvrez un flux : ouvrez un flux d'URL distant via la fonction fopen . Ici, nous utilisons un contexte HTTP pour simuler l'en-tête de demande afin de s'assurer que la méthode de demande du flux est plus conforme à l'application réelle.
Obtenez des métadonnées de flux : utilisez la fonction Stream_get_Meta_Data pour obtenir les métadonnées du flux et vérifier la partie filtre de celui-ci pour voir si des filtres sont inclus.
Vérifiez le filtre : vérifiez si le flux prend en charge des filtres spécifiques, tels que convert.iconv. * Via la fonction in_array .
Fermer Stream : Enfin, appelez Fclose pour fermer les ressources de flux.
En combinant des fonctions Stream_get_Filters et Stream_get_Meta_Data , les développeurs PHP peuvent vérifier et gérer efficacement l'état de l'application des filtres de flux. Cela est très utile pour déboguer et optimiser les opérations de streaming, en particulier lors de la gestion des téléchargements de fichiers, des téléchargements ou d'autres transferts de données réseau.