Skip to content
This repository has been archived by the owner on Jul 3, 2021. It is now read-only.

Latest commit

 

History

History
88 lines (52 loc) · 3.08 KB

README.md

File metadata and controls

88 lines (52 loc) · 3.08 KB

PHPでHTTP入門

Apacheとかphp -Sを使わずにPHP自身で簡易的なHTTPサーバになるやつ.

あらかじめ使用するホストとポートの環境変数を設定しておきます.
デフォルト値は以下のように設定されています.

example@localhost:~$ export HTTPTUTE_TCP_SOCK='localhost:8080'

01-simple-client-server

難易度: ★☆☆☆☆

HTTPはまだ使わずにTCPでやりとりするだけです.

server.php

TCP接続を受理し,「Hello World [N]」のように1秒ごとにクライアントに送信します.
合計3回繰り返されます.1人ずつ順番に処理されます.

client.php

TCP接続を要求し,サーバからデータを受信します.

exec.sh

server.php と client.php をいい感じに自動実行&自動終了してくれるシェルスクリプトです.
クライアントは2人分実行します.別にこれに頼らず手動で各PHPスクリプトを実行しても構いません.

02-fork-tcp-client-server

難易度: ★★☆☆☆

01-simple-client-serverの同時処理版です.

server.php

TCP接続を受理し,「Hello World [N]」のように1秒ごとにクライアントに送信します.
合計3回繰り返されます.プロセスをforkするため,複数人同時に処理されます.

client.php

TCP接続を要求し,サーバからデータを受信します.

exec.sh

server.php と client.php をいい感じに自動実行&自動終了してくれるシェルスクリプトです.
クライアントは2人分実行します.別にこれに頼らず手動で各PHPスクリプトを実行しても構いません.

03-simple-http-server (server.php)

難易度: ★★☆☆☆

HTTP/1.0に対応したサーバで,assets にあるファイルを返します.
TCPコネクションを1ファイルごとに毎回生成します.

04-keepalive-http-server (server.php)

難易度: ★★★★☆

HTTP/1.1に対応したサーバで,assets にあるファイルを返します.
TCPコネクションを再利用します.

05-streaming-http-server (server.php)

難易度: ★★★★☆

HTTP/1.1に対応したサーバで,assets にあるファイルを返します.
HTTP/1.1の Transfer-Encoding: chunked を利用してストリーミングを実現します.
最近はWebSocketを使うほうが主流ですが,依然としてこちらの方法も利用できます.

06-php-http-server (server.php)

難易度: ★★★☆☆

HTTP/1.0に対応したサーバで,assets にあるファイルを返します.
簡易的にPHPを実行します.但しheader関数などはサポートされていません.
Content-Type: text/html 固定です.

07-websocket-http-server (server.php)

難易度: ★★★★★

HTTP/1.1およびWebSocketに対応したサーバです.
どのURLにアクセスしても手抜きチャット(chat.html)を表示します.
名前も決められないぐらい手抜きです.