PHPでHTTP Request Bodyをgzip圧縮する方法
スポンサーリンク
このドキュメントの内容は、以下の通りです。
HTTP Request Body を圧縮して、データ転送量を減らそうと思い、gzipでデータを圧縮してみました。plain.txt
適当にテキストを入れたファイルを作成します。
request.php
request.php は、 HTTP Request を送信するためのスクリプトです。
データを圧縮して、 handler.php に curl で投げます。
<?php // リクエストデータを読み込む $request_body = file_get_contents ('./plain.txt'); error_log (strlen ($request_body) ); // リクエストデータを gzip する $request_body = gzencode ($request_body); // HTTP リクエストの HTTP Header に、コンテンツの長さとエンコーディング gzipをセットする。 $headers = array ( 'Content-Length' => strlen ($request_body), 'Content-Encoding' => 'gzip', ); var_dump ($headers); $curl = curl_init ("http://localhost/handler.php"); curl_setopt ($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt ($curl, CURLOPT_POSTFIELDS, $request_body); curl_exec ($curl); curl_close ($curl); ?>
handler.php
request.php の圧縮データを受信して、error log に受信データの内容を出力するだけのプログラムです。
<?php error_log ('handler.php'); // Request Body を受け取ります。 $data = file_get_contents("php://input"); // デコード前のデータサイズなどを出力します。 error_log ("Before decode"); error_log (strlen ($data)); error_log ($data); // Request Body を gunzip します $plain = gzdecode ($data); // gunzip したデータをエラーログに出力します。 error_log ("After decode"); error_log ( strlen ($plain) ); error_log ( $plain ); ?>
実行例
% php request.php 521 array(2) { ["Content-Length"]=> int(34) ["Content-Encoding"]=> string(4) "gzip" }
Apache のエラーログ出力
% tail -f /var/log/httpd-error.log [Fri Nov 30 12:06:20 2012] [error] [client 127.0.0.1] handler.php [Fri Nov 30 12:06:20 2012] [error] [client 127.0.0.1] Before decode [Fri Nov 30 12:06:20 2012] [error] [client 127.0.0.1] 34 [Fri Nov 30 12:06:20 2012] [error] [client 127.0.0.1] \x1f\x8b\b [Fri Nov 30 12:06:20 2012] [error] [client 127.0.0.1] After decode [Fri Nov 30 12:06:20 2012] [error] [client 127.0.0.1] 521 [Fri Nov 30 12:06:20 2012] [error] [client 127.0.0.1] FreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\nFreeBSD\n\n
という感じで、データを圧縮して、送信できます。
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12