📝
【PHP 拡張】PHP エクステンションで HTTP/2 ヘッダーを HPACK 形式に圧縮する
HTTP/2 ヘッダーを HPACK 形式に圧縮する PHP エクステンションを書いた。nghttp2 を前提とする。Debian の場合、次のコマンドで導入できる。
sudo apt install libnghttp2-dev
Github からダウンロードしてビルドしてみよう
git clone https://github.com/masakielastic/ext-hpack.git
cd php-hpack
phpize
./configure
make
modules フォルダに hpack.so が生成される。php
の -d
オプションでパスを指定することで実行できる。
php -dextension=modules/hpack.so test.php
test.php
<?php
$headers = [
[":scheme", "https"],
[":authority", "example.org"],
[":path", "/"],
["user-agent", "libnghttp2"],
["accept-encoding", "gzip, deflate"]
];
$output = "\x87\x41\x88\x2f\x91\xd3\x5d\x05\x5c\xf6\x4d".
"\x84\x7a\x87\xa0\xd1\xd5\x34\xe9\x4d\x62\x90";
var_dump(
$output === hpack_encode($headers),
$headers === hpack_decode($output)
);
Discussion