Heim > Backend-Entwicklung > PHP-Problem > So verwenden Sie das bz2-Komprimierungserweiterungstool in PHP

So verwenden Sie das bz2-Komprimierungserweiterungstool in PHP

醉折花枝作酒筹
Freigeben: 2023-03-10 10:54:02
nach vorne
2728 Leute haben es durchsucht

In diesem Artikel erfahren Sie, wie Sie das bz2-Komprimierungserweiterungstool in PHP verwenden. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

So verwenden Sie das bz2-Komprimierungserweiterungstool in PHP

Bei der täglichen Entwicklung und Computernutzung kommen wir häufig mit einigen Tools zur Komprimierung und Dekomprimierung in Berührung, und PHP hat auch viele verwandte Betriebserweiterungspakete für uns vorbereitet, und es gibt direkt verfügbare Funktionen, die bequem verwendet werden können und Dekompressionsfunktionen. Heute lernen wir zunächst ein einfacheres, aber weniger häufig verwendetes Komprimierungsformat kennen: Bzip2.

Erweiterung installieren

Die Installation dieser Erweiterung erfordert bzip2-devel auf dem System. Wir müssen also zuerst die Unterstützung für dieses Softwarepaket auf dem System installieren und dann wird diese Erweiterung mit dem PHP-Installationspaket veröffentlicht, sodass wir nur PHP kompilieren und den entsprechenden Kompilierungsbefehl in ./configure hinzufügen müssen.

# yum install bzip2-devel
# ./configure xxxx --with-bz2
# make && make install
Nach dem Login kopieren

Grundlegende Operationen

Bzip2 bietet nur wenige Funktionen und ist sehr einfach. Das erste, was wir uns ansehen, ist das Speichern einer Zeichenfolge in einer Datei.

$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);
Nach dem Login kopieren

Genau wie bei der Dateioperationsfunktion müssen wir zuerst die Datei über bzopen() öffnen, um das Handle zu erhalten. Verwenden Sie dann bzwrite(), um in die Datei zu schreiben, und bzread(), um die Datei zu lesen. Verwenden Sie abschließend bzclose(), um die Datei zu schließen.

Hier ist zu beachten, dass der zweite Parameter von bzopen(), der die Form angibt, in der die Datei geöffnet wird, nur als „w“ oder „r“ geschrieben werden kann. Es hat keinen anderen Typ und kann nicht gleichzeitig gelesen und geschrieben werden, das heißt, es kann nicht in der Form „wr“ geschrieben werden. Nachdem wir also mit dem Schreiben der Datei fertig sind, müssen wir „r“ verwenden, um die Datei zu öffnen und sie zu lesen.

Einstellung der Leselänge

$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);
Nach dem Login kopieren

Der zweite Parameter von bzread() ist die optionale Bytelänge, der Standardwert ist 1024 und es können maximal 8192 unkomprimierte Bytes gleichzeitig gelesen werden.

String-Kodierung

Die Bzip2-Erweiterung stellt uns auch Funktionen zur Verfügung, um Strings direkt zu kodieren. Es ist nicht erforderlich, es jedes Mal in der Datei zu speichern. Wenn es sich um dieselbe Zeichenfolge handelt, handelt es sich bei der Funktion, die die Zeichenfolgencodierung verwendet, und bei der Inhaltsausgabe in der Datei um denselben verstümmelten Binärinhalt.

$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;
Nach dem Login kopieren

bzcompress() wird zum Codieren und Komprimieren von Zeichenfolgen verwendet. Der zweite Parameter ist das Komprimierungsverhältnis und 9 ist die höchste Stufe. Der codierte Inhalt ist nicht-menschlicher binärer Kauderwelsch. bzdecompress() wird verwendet, um codierte Inhalte zu dekodieren. Ich glaube, viele Freunde haben herausgefunden, dass sich damit vertrauliche Inhalte verschlüsselt übertragen lassen. Gleichzeitig können wir im Testcode sehen, dass er normalerweise auch Chinesisch unterstützt.

Fehlermeldung

Abschließend werfen wir einen Blick auf die Fehlerbehandlungsfunktion von 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);
Nach dem Login kopieren

Wir erstellen zunächst eine Fehlerumgebung. Nachdem Sie mit „r“ die Datei geöffnet und das Handle erhalten haben, schreiben Sie in die Datei. bzerror() gibt ein Array von Fehlermeldungen zurück, das die Fehlernummer und den Inhalt der Fehlermeldung enthält. bzerrno() und bzerrstr() geben die Fehlernummer bzw. den Fehlerinhalt zurück. Drei sehr einfache und leicht verständliche Funktionen.

Zusammenfassung

Diese Erweiterung ist immer noch sehr einfach. Das Wichtigste ist, dass der komprimierte Bzip2-Dateityp nicht sehr häufig verwendet wird und daher möglicherweise nicht vielen Leuten bekannt ist. Aber wir fanden immer noch eine kleine Überraschung: Es bietet Funktionen zur Zeichenfolgenkodierung und -dekodierung. Diese beiden Funktionen können in bestimmten Szenarien tatsächlich als Mittel zur Informationsverschlüsselung verwendet werden.

Testcode:

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
Nach dem Login kopieren

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das bz2-Komprimierungserweiterungstool in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage