Awesome
phluxor-http-application-samples
BoxOffice / Ticket Seller
such a simple example of a ticket seller application.
A sample similar to the akka in action book.
requires PHP 8.3 or later, and swoole extension.
概要
アクターは下記の通りです。
graph LR
Root --> BoxOffice
BoxOffice --> TicketSeller
Box Officeがチケット販売を行い、Ticket Sellerがチケットを作成します。
Ticket Sellerはイベントごとに存在します。
これらはすべて並行して動作し、それぞれのアクターは隔離されています。
graph LR
Root --> BoxOffice
BoxOffice --> TicketSeller1
BoxOffice --> TicketSeller2
BoxOffice --> TicketSeller3
場合によってはTicket SellerからBoxOfficeを経由せずにRootに直接メッセージを送ることもあります。
boot application
# example
$ ./vendor/bin/laminas mezzio:swoole:start -w 1
サーバはデフォルトで8080ポートで起動します。
チケット作成
好きなイベントのチケットを作成しましょう
イベント名をパスで指定し、ticketsに作成するチケットの枚数を指定します。
好きなだけチケットを作ってください。
ただし同じイベント名のチケットは作成できません。
アクターが重複をチェックしています。
チケットはメモリに保存されますので、停止すると消えます
$ curl --request POST \
--url http://127.0.0.1:8080/events/frank_zappa_live1985 \
--header 'Content-Type: multipart/form-data' \
--form tickets=40
全てのチケット取得
作成されたチケットを取得します。
イベント名とチケット枚数が返ってきます。
$ curl --request GET \
--url http://127.0.0.1:8080/events
単一のチケット取得
作成されたチケットを一件取得します。
$ curl --request GET \
--url http://127.0.0.1:8080/events/frank_zappa_live1985
チケット販売の停止
作成済みのチケットを削除します
$ curl --request DELETE \
--url http://127.0.0.1:8080/events/frank_zappa_live1985