Comment utiliser l'outil d'extension de compression bz2 en PHP

醉折花枝作酒筹
Libérer: 2023-03-10 10:54:02
avant
2708 Les gens l'ont consulté

Cet article vous présentera comment utiliser l'outil d'extension de compression bz2 en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment utiliser l'outil d'extension de compression bz2 en PHP

Dans le développement quotidien et l'utilisation informatique, nous entrons souvent en contact avec certains outils de compression et de décompression. PHP a également préparé de nombreux packages d'extension d'opérations connexes pour nous, tous. Il existe des fonctions directement disponibles qui peuvent facilement faire fonctionner certaines fonctions de compression et de décompression. Aujourd’hui, nous allons d’abord apprendre un format de compression plus simple mais moins utilisé : Bzip2.

Installation de l'extension

L'installation de cette extension nécessite bzip2-devel sur le système. Nous devons donc d'abord installer le support de ce progiciel sur le système, puis cette extension est publiée avec le package d'installation PHP, il nous suffit donc de compiler PHP et d'ajouter la commande de compilation correspondante dans ./configure.

# yum install bzip2-devel
# ./configure xxxx --with-bz2
# make && make install
Copier après la connexion

Opérations de base

Bzip2 fournit peu de fonctions et est très simple. La première chose que nous examinons est d'enregistrer une chaîne dans un fichier.

$bz = bzopen('/tmp/test.bz', 'w');
// -rw-r--r-- 1 root root 14 Jun 28 09:51 test.bz

$text = "This is Bz Compress";
bzwrite($bz, $text);
// -rw-r--r-- 1 root root 59 Jun 28 09:53 test.bz

bzclose($bz);

$bz = bzopen('/tmp/test.bz', 'r');

$v = bzread($bz);
echo $v, PHP_EOL;
// This is Bz Compress

bzclose($bz);
Copier après la connexion

Tout comme la fonction d'opération de fichier, nous devons d'abord ouvrir le fichier via bzopen() pour obtenir le handle. Utilisez ensuite bzwrite() pour écrire dans le fichier et bzread() pour lire le fichier. Enfin, utilisez bzclose() pour fermer le fichier.

Ce qu'il faut noter ici, c'est que le deuxième paramètre de bzopen(), qui est la forme sous laquelle le fichier est ouvert, ne peut être écrit que sous la forme "w" ou "r". Il n'a pas d'autre type et ne peut pas être lu et écrit en même temps, c'est-à-dire qu'il ne peut pas être écrit sous la forme « wr ». Ainsi, après avoir fini d'écrire le fichier, nous devons utiliser "r" pour ouvrir le fichier et le lire.

Paramètre de longueur de lecture

$bz = bzopen('/tmp/test.bz', 'r');

$v = bzread($bz, 10);
echo $v, PHP_EOL;
// This is Bz

$v = bzread($bz);
echo $v, PHP_EOL;
//  Compress

bzclose($bz);
Copier après la connexion

Le deuxième paramètre de bzread() est une longueur d'octet facultative, la valeur par défaut est 1024 et un maximum de 8192 octets non compressés peuvent être lus à la fois.

Encodage de chaînes

L'extension Bzip2 nous fournit également des fonctions pour encoder directement des chaînes. Il n'est pas nécessaire de l'enregistrer dans le fichier à chaque fois. S'il s'agit de la même chaîne, la fonction utilisant le codage de chaîne et le contenu généré dans le fichier seront le même contenu binaire tronqué.

$str = "Test compress String";

$bzstr = bzcompress($str, 9);
echo $bzstr, PHP_EOL;
// BZh91AY&SY��J���@
//
// �� 1
// df����2�h>.�p�!��//

$newStr = bzdecompress($bzstr);
echo $newStr, PHP_EOL;

$chineseStr = "测试";
$bzstr = bzcompress($chineseStr, 9);
echo bzdecompress($bzstr), PHP_EOL;
Copier après la connexion

bzcompress() est utilisé pour encoder et compresser des chaînes. Le deuxième paramètre est le taux de compression, et 9 est le niveau le plus élevé. Le contenu codé est du charabia binaire non humain. bzdecompress() est utilisé pour décoder le contenu codé. Je pense que de nombreux amis ont découvert que cela peut être utilisé pour la transmission cryptée de contenu confidentiel. En même temps, dans le code de test, nous pouvons voir qu'il prend également en charge normalement le chinois.

Message d'erreur

Enfin, jetons un coup d'œil à la fonction de gestion des erreurs de Bzip2.

$bz = bzopen('/tmp/test.bz', 'r');
bzwrite($bz, 'aaa');
print_r(bzerror($bz));
// Array
// (
//     [errno] => -1
//     [errstr] => SEQUENCE_ERROR
// )

echo bzerrno($bz), PHP_EOL; // -1
echo bzerrstr($bz), PHP_EOL; // SEQUENCE_ERROR

bzclose($bz);
Copier après la connexion

Nous construisons d'abord un environnement d'erreur. Après avoir utilisé "r" pour ouvrir le fichier et obtenir le handle, écrivez dans le fichier. bzerror() renverra un tableau de messages d'erreur, qui contient le numéro d'erreur et le contenu du message d'erreur. bzerrno() et bzerrstr() renvoient respectivement le numéro d'erreur et le contenu de l'erreur. Trois fonctions très simples et faciles à comprendre.

Résumé

Cette extension est encore très simple. Le plus important est que le type de fichier compressé Bzip2 n'est pas un type très couramment utilisé, donc les gens qui le savent peuvent le savoir. ce n'est pas grand chose. Mais nous y avons quand même trouvé une petite surprise, c'est-à-dire qu'il fournit des fonctions de codage et de décodage de chaînes. Ces deux fonctions peuvent en effet être utilisées comme moyen de cryptage d'informations dans certains scénarios.

Code de test :

https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/PHP%E7%9A%84Bzip2%E5%8E%8B%E7%BC%A9%E6%89%A9%E5%B1%95%E5%B7%A5%E5%85%B7.php
Copier après la connexion

Apprentissage recommandé : Tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal