PHPで使用する圧縮方式は?
質問
私は、2つのPHPスクリプトを使用して移動する大量のデータを持っています。1つはコマンドラインPHPスクリプトを使用してクライアント側で、もう1つはApacheの後ろで使用します。私はデータをサーバー側に POST し、php://input stream を使用して Web サーバー側で保存します。メモリの制限に達しないように、データはPOSTリクエストごとに500kBのチャンクに分けられています。これらはすべて問題なく動作しています。
さて、帯域幅を節約してスピードアップするために、私は送信前にデータを圧縮し、相手側で受信したときに解凍したいと思います。その仕事をすることができる3組の関数を見つけましたが、どれを使うか決めかねています。
どの機能のペアがお勧めですか、またその理由は?
UPDATEです。 zlibのFAQを読みました。
gzip フォーマット (
gzencode
) は、ファイル名や最終更新日のような、一つのファイルに関するディレクトリ情報を保持するために設計されました。zlib フォーマット (
gzcompress
) は、一方ではインメモリや通信チャネルアプリケーション用に設計され、 gzip よりもずっとコンパクトなヘッダとトレイラを持ち、より高速な完全性チェックを使用します。
どのように解決するのか?
いずれも使用可能です。 3つの間には微妙な違いがあります。
-
gzencode()
は GZIP ファイル形式を使用します。
gzip
コマンドラインツールと同じです。 このファイル形式は、オプションのメタデータを含むヘッダ、DEFLATE 圧縮データ、および CRC32 チェックサムと長さチェックを含むフッタを備えています。 - gzcompress() は ZLIB フォーマットを使用します。 圧縮形式、DEFLATE圧縮データ、ADLER32チェックサムを含むフッターを識別するためだけの短いヘッダを持ちます。
- gzdeflate() はそれ自身で生の DEFLATE アルゴリズムを使用します。
3つとも同じアルゴリズムを使用しているので、速度や効率に差はありません。
gzencode()
は、元のファイル名とその他の環境データを含める機能を追加します (これは、単に文字列を圧縮する場合には使用されません)。
gzencode()
と
gzcompress()
は両方ともチェックサムを追加するので、アーカイブの完全性を検証することができます。これは信頼性の低い伝送や保存方法に対して有用です。 もしすべてがローカルに保存され、追加のメタデータが必要ない場合は
gzdeflate()
で十分でしょう。 移植性のために、私は
gzencode()
(GZIP フォーマット) をお勧めします。
gzcompress()
(ZLIB形式)よりもサポートされていると思われます。
非常に短い文字列を圧縮する場合、非常に短い入力ではオーバーヘッドが出力のかなりの部分を占める可能性があるため、各方式のオーバーヘッドが重要になります。空の文字列を圧縮することによって測定される、各メソッドのオーバーヘッドは次のとおりです。
-
gzencode('')
= 20バイト -
gzcompress('')
= 8バイト -
gzdeflate('')
= 2バイト
関連
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] Deflate圧縮のブラウザ互換性とGZIPに対する優位性
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み】/var/www/htmlとは何ですか?[クローズド]
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。