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
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);
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);
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;
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);
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
Apprentissage recommandé : Tutoriel vidéo php