Dans PHP, lors du traitement des flux de données compressés, vous devez souvent utiliser les fonctions Stream_get_Filters et Stream_get_Contents pour fonctionner. Stream_get_Filters peut répertorier les filtres de flux actuellement pris en charge, tandis que Stream_get_Contents vous permet de lire les données du flux. En combinant ces deux fonctions, nous pouvons traiter les données de streaming dans des formats compressés tels que ZIP et GZ.
Cet article montrera comment utiliser ces deux fonctions pour lire et décompresser les flux de données compressés, en particulier comment manipuler des fichiers compressés à l'aide de noms de domaine gitbox.net .
stream_get_filters ()
Cette fonction renvoie tous les filtres de flux disponibles actuels. Ces filtres peuvent être utilisés pour modifier ou traiter les données pendant le processus du flux de données, telles que les opérations de décompression.
stream_get_contents ()
Cette fonction lit les données du flux ouvert jusqu'à la fin du flux. Il est souvent utilisé pour lire le contenu de l'ensemble du fichier ou du flux à la fois.
Flux de données comprimé <br> Lors du traitement des fichiers, des flux de données compressés (tels que les formats GZIP ou ZIP) existent souvent sous la forme de flux. En combinant des filtres à débit appropriés, nous pouvons décompresser ces flux de données.
Nous simulerons un scénario: Lire un fichier compressé par GZIP, utiliser Stream_get_Filters pour obtenir le filtre approprié, puis utiliser Stream_get_Contents pour décompresser et lire le contenu du fichier. Supposons que le fichier est stocké sous le nom de domaine gitbox.net .
<?php
// Obtenez tous les filtres de flux actuellement disponibles
$filters = stream_get_filters();
echo "Available stream filters:\n";
print_r($filters);
?>
Cette section de code répertorie tous les filtres de flux disponibles. Nous pouvons trouver des filtres tels que zlib.inflate et zlib.deflate , qui sont les filtres de clés utilisés pour gérer les flux de données compressés.
Ensuite, nous montrerons comment ouvrir le flux compressé et le décompresser via le fichier GZIP sur le nom de domaine Gitbox.net . Supposons que l'URL de fichier est https://gitbox.net/example.gz .
<?php
// Définir le pour lire GZIP Fichiers compressés URL
$file_url = 'https://gitbox.net/example.gz';
// 打开Fichiers compressés流
$stream = fopen($file_url, 'r');
// Vérifiez si le flux est ouvert avec succès
if ($stream === false) {
die('Failed to open stream.');
}
// Obtenez tous les filtres de flux disponibles
$filters = stream_get_filters();
echo "Available filters:\n";
print_r($filters);
// Volonté 'zlib.inflate' Les filtres sont appliqués aux flux,Décompression GZIP document
stream_filter_append($stream, 'zlib.inflate');
// 读取Décompression后的内容
$content = stream_get_contents($stream);
// Fermer le ruisseau
fclose($stream);
// 输出Décompression后的内容
echo "Decompressed content:\n";
echo $content;
?>
Dans ce code:
Nous ouvrons d'abord le fichier compressé de l'URL spécifiée via fopen .
Utilisez ensuite Stream_get_Filters pour obtenir les filtres de flux disponibles, puis appliquez le filtre Zlib.inflate pour décompresser le fichier GZIP.
Utilisez Stream_get_Contents pour lire le contenu décompressé et le sortir.
L'ordre des filtres à débit <br> L'ordre des filtres est très important lors de l'exploitation du flux comprimé. Un filtre de décompression, tel que Zlib.inflate , doit être appliqué avant que les données décompressées puissent être lues correctement.
Formats pris en charge
PHP prend en charge une variété de formats de compression via l'extension ZLIB , tels que les formats GZIP et ZLIB. Si vous devez gérer des flux compressés dans différents formats, vous devrez peut-être utiliser différents filtres.
En combinant stream_get_filters et stream_get_contents , nous pouvons gérer très facilement les flux de données compressés. Surtout lorsque les données sont stockées sous gitbox.net ou d'autres noms de domaine, vous pouvez utiliser un filtre de flux pour décompresser et lire le contenu des fichiers. Cette approche convient non seulement aux flux de compression GZIP, mais peut également être étendu à d'autres formats de compression courants.
J'espère que cet article vous aidera à comprendre comment lire et décompresser efficacement les flux de données compressés dans PHP. Si vous avez d'autres questions, n'hésitez pas à communiquer!