PHPスクリプトで出力データを圧縮する方法を調べました。備忘としてメモ書きしています。
※目次をクリックすると目次の下部にコンテンツが表示されます。
出力バッファをgzip圧縮
〇構文
bool ob_start(callable $output_callback)
 
・出力のバッファリングを有効にする。
・output_callbackは、出力バッファの内容をパラメータとして受け取り、処理した結果をブラウザに送信する。
 
①ob_gzhandlerを使用
 
・出力バッファをgzip圧縮するためのob_startコールバック関数。
・実際に圧縮されたデータを送信する前にブラウザがサポートするcontent encodingの種類(“gzip”、”deflate” またはなし)を調べ、それに基づいて出力を返す。
例)
<?php
ob_start(“ob_gzhandler”);
?>
<html>
<body>
・・・・
</body>
</html>
 
②コールバックを自分で定義
 
例)
bool ob_start(callable $output_callback)
・出力のバッファリングを有効にする。
・output_callbackは、出力バッファの内容をパラメータとして受け取り、処理した結果をブラウザに送信する。
①ob_gzhandlerを使用
・出力バッファをgzip圧縮するためのob_startコールバック関数。
・実際に圧縮されたデータを送信する前にブラウザがサポートするcontent encodingの種類(“gzip”、”deflate” またはなし)を調べ、それに基づいて出力を返す。
例)
<?php
ob_start(“ob_gzhandler”);
?>
<html>
<body>
・・・・
</body>
</html>
②コールバックを自分で定義
例)
<?php
ob_start("customhandler");
function customhandler($buffer) {
  $buffer = str_replace(
    array ("\r", " ", "\n", "\t"),"");
    return $buffer;
  }
?>
<html>
<body>
・・・・
</body>
</html>
zlibを使って圧縮
・このモジュールによりgzip(.gz)で圧縮されたファイルを読み書きすることが可能となる。
・php.iniまたはApacheの設定で下記オプションを設定。
 
①output_compression boolean/integer
 
・透過的なページ圧縮を行うかどうかを設定。
・このオプションが”On”に設定された場合、ブラウザが”Accept-Encoding: gzip”または”deflate”ヘッダを送信する場合に、ページは圧縮される
・”Content-Encoding: gzip”(および “deflate”)と”Vary: Accept-Encoding”ヘッダが出力に追加される。
・実行時、何らかのデータを送出する前にのみ設定することが可能。
・”On”/”Off”のかわりに整数値をとることができ、出力のバッファサイズ(デフォルトは4KB)を設定することができる。
 
②output_compression_level integer
 
・透過的出力圧縮で使用される圧縮レベル。
・0(圧縮しない)から9(最高レベルの圧縮をする)までの値を指定。
・デフォルト値の-1は、どのレベルを使用するかをサーバーで決定させる。
・php.iniまたはApacheの設定で下記オプションを設定。
①output_compression boolean/integer
・透過的なページ圧縮を行うかどうかを設定。
・このオプションが”On”に設定された場合、ブラウザが”Accept-Encoding: gzip”または”deflate”ヘッダを送信する場合に、ページは圧縮される
・”Content-Encoding: gzip”(および “deflate”)と”Vary: Accept-Encoding”ヘッダが出力に追加される。
・実行時、何らかのデータを送出する前にのみ設定することが可能。
・”On”/”Off”のかわりに整数値をとることができ、出力のバッファサイズ(デフォルトは4KB)を設定することができる。
②output_compression_level integer
・透過的出力圧縮で使用される圧縮レベル。
・0(圧縮しない)から9(最高レベルの圧縮をする)までの値を指定。
・デフォルト値の-1は、どのレベルを使用するかをサーバーで決定させる。
- 
インストール、設定
 - PHPの設定、更新時の参考情報メモ
 - PHPのインストール
 - CentOS6でPHP5.3からPHP7.1へアップデート
 - CentOS6.10でPHP7.1からPHP7.2へアップデート
 - CentOS Stream9でPHP7.4をインストールする手順
 - CentOSでPHPのマルチバイト文字列(MBstring)関数を使えるようにする
 - PHPでタイムスタンプをログファイルに記録
 - PHPのバージョンが表示されないようにする
 - セキュリティを考慮した/etc/php.iniの設定
 - CentOS6でAPC(Alternative PHP Cache)をインストール、チューニング
 - PHPスクリプトで出力データを圧縮する方法
 - PHPの変数、スコープ
 - PHPの型の概要、種類
 - PHPのクラス操作の概要
 - PHPの配列操作の概要
 - PHPで文字列のマッチング
 - require,require_once,include,include_onceの違い
 - CentOS環境のPHPでPDOを使ってMySQLからJSONでデータ取得
 - PHPでHTMLテーブルをJSONに変換
 - PHPでディレクトリ内のファイル一覧をJSONで出力
 - PDOを使ってテーブルに保存
 - PDOでSQLインジェクション対策
 - phpとpChartを使ってWebサイトにグラフ表示
 
性能
プログラミングの基本
PDO、データベース、JSON
その他