ホームページ バックエンド開発 PHPチュートリアル PHP_PHP チュートリアルで zlib 拡張機能を使用して GZIP 圧縮出力を実装するさまざまな方法の概要

PHP_PHP チュートリアルで zlib 拡張機能を使用して GZIP 圧縮出力を実装するさまざまな方法の概要

Jul 20, 2016 am 11:10 AM
gzip php zlib 一般的に 現れる 圧縮 成し遂げる 要約する 場合 私たち 拡大する 方法 出力

通常の状況では、大量のデータ送信があり、サーバーの帯域幅の負荷を軽減したい場合、PHP で zlib を使用してファイル送信を圧縮する方法を採用し、gzip 圧縮出力を実現することもできます。さまざまな GZIP 圧縮出力方法のまとめ

GZIP (GNU-ZIP) は圧縮技術です。 GZIP 圧縮後、ページ サイズは元のサイズの 30%、またはさらに小さくなることがあります。こうすることで、ユーザーは閲覧中に爽快感と幸福感を得ることができます。

準備

1. php_zlib.dll ファイルが見つかりませんか?

Zlib圧縮はphp4.3からphpに組み込まれたため、少なくともWindows環境ではzlibをインストールする必要はありません。

2. php 実行環境をインストールして構築します

php の gzip 圧縮出力を実現するには、php.ini 設定ファイルを介して gzip 設定を有効にするだけでは十分ではなく、Apache のサポートが必要なため、インストールして構築することをお勧めします。 php+apache+mysqlの実行環境を構築します。

php gzip設定手順

1. php.ini設定ファイルを開き、zlib.output_compression = Offを見つけて、


zlib.output_compression = Off
;zlib.output_compression_level = -1

zlibに変更します。 .output_compression = On
zlib.output_compression_level = 6

例 1

PHP は zlib 拡張機能を使用してページの GZIP 圧縮出力を実装します

コード

コードは次のとおりです コードをコピーします

function ob_gzip( $content) // $content は圧縮されるページのコンテンツです

{

if(!headers_sent() && extension_loaded("zlib") && strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip) "))//判定 ページヘッダ情報が出力されているか、PHPのzlib拡張機能が読み込まれているか、ブラウザがGZIP技術をサポートしているか
{
$content = gzencode($content." n//このページは圧縮",9); //圧縮の準備 コンテンツには「//このページは圧縮されています」というコメントが付けられ、zlib が提供する gzencode() 関数を使用してレベル 9 で圧縮が実行されます。値の範囲は次のとおりです。このパラメータの値は 0 ~ 9 で、0 は圧縮なし、9 は最大圧縮を意味します。当然、圧縮の程度が高くなるほど、CPU の消費量も増加します。
//header() 関数を使用してヘッダー情報をブラウザーに送信し、このページが GZIP で圧縮されていることをブラウザーに伝えます。
header(“Content-Encoding: gzip”);
header(“Vary: Accept-Encoding”);
header(“Content-Length: “.strlen($content));
}
return $content;圧縮されたコンテンツを返します

関数を作成したら、ob_start で呼び出します。これにより、元の ob_start() は

ob_start('ob_gzip') になります。 // ob_start() にパラメータとパラメータ名を追加します。 is 先ほどの関数名です。このようにして、コンテンツがバッファーに入ると、PHP は ob_gzip 関数を呼び出してコンテンツを圧縮します。

最後にバッファを終了します

ob_end_flush(); //バッファを終了し、内容を出力します。もちろん、バッファの内容はプログラムの実行終了時に自動的に出力されるため、この関数は必要ありません。

最後の完全な例

コードは次のとおりです コードをコピー

//ob_gzipという名前の関数を呼び出してコンテンツを圧縮します
ob_start('ob_gzip');
/ /出力コンテンツ
ob_end_flush();
//これは ob_gzip 関数です

function ob_gzip($content)
{
if(!headers_sent()&&extension_loaded("zlib")
&&strstr($_SERVER["HTTP_ACCEPT_ENCODING" ]," gzip"))
{
$content = gzencode($content." n//このページは圧縮されています",9);
header("Content-Encoding: gzip");
header("Vary: Accept -Encoding" );
header("Content-Length: ".strlen($content));
}
return $content;
}
?>

例2

swfファイルのzlib圧縮および解凍コード

ファイルの例:

例 3
コードは次のとおりです コードをコピーします
//swfファイルが圧縮されているため、必要に応じて入力できます ファイルの最初のバイトは 'F' または 'C' で決定されます
圧縮された swf ファイル:
//--------------- ---------- -------------------------------------- ---------- -----------------------
//ファイル名
$filename = "test.swf"; /ファイルを開く
$rs = fopen($ filename,"r");
//ファイルデータを読み取る
$str = fread($rs,filesize($filename));
//swfヘッダファイルを設定する
$head = substr($str,1,8 );
$head = "C".$head;
//swf ファイルの内容を取得します
$body = substr($str,8);
//ファイルの内容を圧縮します最高の圧縮レベル 9
$body = gzcompress( $body, 9);
//ファイルのヘッダーとコンテンツをマージします
$str = $head.$body
//読み取りファイル ストリームを閉じます
fclose($rs);
//新しいファイルを作成します
$ ws = fopen("create.swf","w");
//ファイルを書き込みます
fwrite($ws,$str);
//ファイルを閉じて終了します
fclose ($ws);
//---------------------------------------------- ------------ -------------------------------------- ------------
?>
SWF ファイルを抽出:
//-------------------------- ---------------------------------------------------- --------------- --------
//ファイル名
$filename = "test.swf";
//ファイルを開きます
$rs = fopen ($filename,"r");
//ファイルデータを読み取ります
$str = fread($rs,filesize($filename));
//swf ヘッダー ファイルを設定します
$head = substr($str,1, 8);
$head = "F".$head;
//swf ファイルの内容を取得します
$body = substr($str,8);
//ファイルの内容を解凍します
$body = gzuncompress($body) ;
//ファイルのヘッダーとコンテンツをマージします
$str = $head. $body;
//読み込んだファイルストリームを閉じます
$ws = fopen(" .swf","w");
//ファイルを書き込みます
fwrite($ws,$str);
//ファイルを閉じて保存します
fclose($ws);
//-------- ---------------- ---------------------------------- ---------------- ------------------------
?>


php zlib (gzip) 圧縮出力を有効にする

PHP gzip 構成の知識ポイント:

1 デフォルトでは、PHP は zlib サイト全体の圧縮出力を有効にしませんが、必要なページに対して ob_gzhandler 関数を使用します。圧縮された出力では、2 つのうちの 1 つだけを選択できます。選択しないと、エラーが報告されます。

2. zlib.output_compression のデフォルト値は Off です。または、出力バッファ サイズ (デフォルトは 4k) に設定できます。

3. zlib.output_compression_level は、デフォルトの推奨圧縮率を表します。オプションの範囲は 1 ~ 9 で、-1 は php zlib (gzip) 圧縮をオフにすることを意味します

2. php.ini 設定ファイルを保存し、Apache サーバーを再起動します

3. Apache 設定ファイル httpd.conf を開き、 deflate_module のロード

php gzip 圧縮出力設定を有効にするのが最も重要なステップです。多くのネチズンは、php.ini 設定ファイルで php gzip 設定を有効にしているが、まだ php gzip 圧縮を実装していないと言うでしょう。 Apache は deflate_module をロードできないため、メソッドは次のとおりです:

コードは次のとおりですコードをコピーします#LoadModule deflate_module modules/mod_deflate.so # 記号を削除しますで始めてApacheを再起動します。


http://www.bkjia.com/PHPjc/444679.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444679.html技術記事通常の状況では、大量のデータ送信があり、サーバーの帯域幅の負荷を軽減したい場合は、PHP で zlib を使用してファイル送信を圧縮する方法を採用します。以下では、gzip 圧縮出力を実現します。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

トップ10グローバルデジタル仮想通貨取引プラットフォームランキング(2025権限ランキング) トップ10グローバルデジタル仮想通貨取引プラットフォームランキング(2025権限ランキング) Mar 06, 2025 pm 04:36 PM

2025年、グローバルデジタル仮想通貨取引プラットフォームは、トランザクションのボリューム、セキュリティ、ユーザーエクスペリエンスなどの指標に基づいて、2025年に世界のトップ10のデジタル通貨取引プラットフォームを激しく競争しています。 OKXは、強力な技術的強さとグローバルな運用戦略で最初にランクされており、Binanceは高流動性と低料金に密接に続きます。 Gate.io、Coinbase、Krakenなどのプラットフォームは、それぞれの利点がある最前線にいます。このリストには、Huobi、Kucoin、Bitfinex、Crypto.com、Geminiなどの取引プラットフォームがそれぞれ独自の特徴がありますが、投資は注意する必要があります。プラットフォームを選択するには、セキュリティ、流動性、料金、ユーザーエクスペリエンス、通貨選択、規制コンプライアンスなどの要因を考慮し、合理的に投資する必要があります

一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 Apr 06, 2025 am 12:03 AM

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

2025年の通貨サークルのトップ10の交換 2025年の通貨サークルのトップ10の交換 Feb 27, 2025 pm 06:33 PM

トップ10の仮想通貨取引プラットフォームのランキング(2025年の最新): Binance:グローバルリーダー、高い流動性、規制が注目を集めています。 OKX:大規模なユーザーベース、複数の通貨をサポートし、レバレッジされた取引を提供します。 gate.io:さまざまなフィアット通貨支払い方法を備えた上級交換は、さまざまな取引ペアと投資商品を提供します。 Bitget:デリバティブ交換、高流動性、低料金。 Huobi:さまざまな通貨と取引ペアをサポートする古い交換。 コインベース:厳密に規制されている有名なアメリカの交換。 フェメックスなど。

See all articles