ReactPHP入門 ~HelloWorld編~

React PHPとは

React PHPはイベント駆動型プログラミングとノンブロッキングI/Oを実現する為のPHPのライブラリです。

reactphp.org

ReactPHPはフレームワークではなく以下のような独立したコンポーネントで構成されます。

Core components

  • EventLoop
  • Stream
  • Promise

Network components

  • Socket
  • Datagram

Protocol components

  • HTTP
  • HTTPClient
  • DNS

Utility components

  • Cache
  • PromiseTimer
  • ChildProcess
  • PromiseStream

これらを組み合わせる事により、簡単にHTTPクライアント/サーバなどを書く事ができるらしい。

Hello World

まずはお決まりのHelloWorldを返すサーバを構築して見たいと思います。

インストール

$ mkdir react
$ cd react
$ composer init
$ composer require react/http

server.phpを作成

<?php

require 'vendor/autoload.php';

$loop = React\EventLoop\Factory::create();

$server = new \React\Http\Server(function(\Psr\Http\Message\ServerRequestInterface $request){
    return new \React\Http\Response(200, [
        'Content-Type' => 'text/plain',
    ], "Hello World\n");
});

$socket = new \React\Socket\Server(8080, $loop);
$server->listen($socket);

$loop->run();

これで$ php server.php と実行し、ブラウザでlocalhost:8080を開くと無事ご挨拶完了です。

f:id:kinbuu:20180115233731p:plain
Hello World

まとめ

PHPでもこんなに簡単にサーバ書ける時代になってたんだなぁ。まだまだ色々出来そうなので試していこうと思います。

次回は簡単なチャットでも作ってみたいと思います。