😎
【PHP】fwrite と fread で HTTP/2 フレームを送受信する
コードを単純にするために fsockopen
を使ったコードに書き換え。HEADERS と DATA フレームを取得できるものの、スクリプトを連打するとスクリプトがハングしたり、データを正しく得られない状況になる。
client.php
<?php
# h2c テストサーバー
# https://zenn.dev/masakielastic/articles/530f9751697ed6
# https://gist.github.com/masakielastic/8840124754b38663373f8f74d6f162d4
require 'h2frames.php';
$fp = fsockopen('localhost', 8000);
fwrite($fp, h2frames('pri'));
fwrite($fp, h2frames('settings'));
$ret = fread($fp, 128);
dump($ret, 'settings');
fwrite($fp, h2frames('ack'));
$ret = fread($fp, 128);
dump($ret, 'ack');
fwrite($fp, h2frames('headers'));
$ret = fread($fp, 128);
dump($ret, 'headers+data');
fclose($fp);
Discussion