ReactPHP は、PHP のイベント駆動型プログラミング用の低レベル ライブラリです。その中心となるのはイベント ループであり、その上に、ストリーム抽象化、非同期 DNS リゾルバー、ネットワーク クライアント/サーバー、HTTP クライアント/サーバー、プロセスとの対話などの低レベル ユーティリティが提供されます。サードパーティのライブラリは、これらのコンポーネントを使用して、非同期ネットワーク クライアント/サーバーなどを作成できます。
<?php
// $ composer require react/http react/socket # install example using Composer
// $ php example.php # run example on command line, requires no additional web server
require __DIR__ . ' /vendor/autoload.php ' ;
$ server = new React Http HttpServer ( function ( Psr Http Message ServerRequestInterface $ request ) {
return React Http Message Response:: plaintext (
" Hello World! n"
);
});
$ socket = new React Socket SocketServer ( ' 127.0.0.1:8080 ' );
$ server -> listen ( $ socket );
echo " Server running at http://127.0.0.1:8080 " . PHP_EOL ;
ReactPHP で書かれたこの単純な Web サーバーは、「Hello World!」で応答します。あらゆるリクエストに対応します。
ReactPHP は本番環境に対応しており、世界中のあらゆる種類のプロジェクトによる何百万ものインストールで実戦テストされています。そのイベント駆動型のアーキテクチャは、数百または数千の同時接続、長時間実行されるアプリケーション、およびノンブロッキング I/O 操作による他の多くの形式の協調マルチタスクを処理する効率的なネットワーク サーバーおよびクライアントに最適です。 ReactPHP を特別なものにしているのは、何百ものサードパーティ ライブラリを備えた鮮やかなエコシステムであり、一般的なネットワーク サービス、データベース システム、その他のサードパーティ API などの多くの既存システムと統合できます。
ReactPHP はデフォルトではノンブロッキングです。 I/O をブロックするにはワーカーを使用します。イベント ループはリアクター パターン (そのため名前が付けられています) に基づいており、EventMachine (Ruby)、Twisted (Python)、Node.js (V8) などのライブラリから強く影響を受けています。
あなたが現在見ているこのリポジトリは、主に @ReactPHP に関するあらゆることを議論し、計画するためのメタ リポジトリとして使用されます。各コンポーネント、そのドキュメント、ソース コードの詳細については、以下にリンクされている個々のコンポーネントを参照してください。
EventLoop ReactPHP のコア リアクター イベント ループ。ドキュメントを読む
ストリームReactPHP でのノンブロッキング I/O のためのイベント駆動型の読み取りおよび書き込み可能なストリーム。ドキュメントを読む
Promise Promise/PHP の実装。ドキュメントを読む
Async ReactPHP 用の非同期ユーティリティとファイバー。ドキュメントを読む
ソケット非同期、ストリーミング プレーンテキスト TCP/IP、および ReactPHP 用の安全な TLS ソケット サーバーとクライアント接続。ドキュメントを読む
ReactPHP 用のデータグラムイベント駆動型 UDP クライアントおよびサーバー ソケット。ドキュメントを読む
HTTPイベント駆動型のストリーミング HTTP クライアントおよび ReactPHP サーバーの実装。ドキュメントを読む
ReactPHP 用のDNS非同期 DNS リゾルバー。ドキュメントを読む
ReactPHP のキャッシュ非同期キャッシュ。ドキュメントを読む
ChildProcess子プロセスを実行するためのライブラリ。ドキュメントを読む
PromiseTimer ReactPHP の Promise ライブラリの簡単なタイムアウト実装。ドキュメントを読む
PromiseStream ReactPHP 上に構築された、Promise-land と Stream-land 間のミッシングリンク。ドキュメントを読む
リアルタイム アプリケーション メッセージング用の Autobahn および WAMP (Web Application Messaging Protocol) 用のThruway PHP クライアントおよびルーター ライブラリ voryx/Thruway
PPM - PHP プロセス マネージャーPPM は、最新の PHP アプリケーション用のプロセス マネージャー、スーパーチャージャー、およびロード バランサーです。 php-pm/php-pm
php-ar-droneユーザーが PHP 経由で Parrot AR Drone を制御できるようにする、node-ar-drone のポート jolicode/php-ar-drone
Ratchet非同期 WebSocket サーバー ratchetphp/Ratchet
PredisAsync ReactPHP 上に構築された Redis 用の非同期 PHP クライアント ライブラリ nrk/predis-async
クルー/redis-server純粋な PHP での Redis サーバーの実装 quote/redis-server
Wiki ページにはさらに多くの情報があります »
Sergey Zhuk ReactPHP を基本から実際のアプリケーション例までカバーする一連の記事。 sergeyzhuk.me
いくつかの ReactPHP コンポーネントとその仕組みに関するCees-Jan Kiewietブログ シリーズ。 blog.wyrihaximus.net
Loïc Faugeronスーパー スピード Symfony - ReactPHP。 gnugat.github.io
Marc J. Schmidtあなたの PHP アプリに高性能をもたらします (ReactPHP を使用)。 marcjschmidt.de
Marc Morera ReactPHP と Symfony の出会いのときmedium.com/@apisearch
Christian Lück ReactPHP で限界を超える
Jeremy Mikola React を使用した非同期 PHP
Igor Wiedlerイベント駆動型 PHP
ReactPHP は、一連の個別のコンポーネントで構成されます。これは、「ReactPHP フレームワーク」のようなものをインストールする代わりに、実際に必要なコンポーネントのみを選択することを意味します。
このプロジェクトは、すべての安定したコンポーネントについて SemVer に従っています。これらのコンポーネントをインストールする推奨方法は、Composer を使用することです。作曲家は初めてですか?
たとえば、これは次のようになります。
# recommended install: pick required components
composer require react/event-loop react/http
代わりに、すべての安定したコンポーネントを一度にインストールするメタ パッケージも提供します。安定したコンポーネントのリストは時間の経過とともに変更される可能性があるため、これをインストールすることは、簡単なプロトタイピングの場合にのみ推奨されます。このメタ パッケージは次のようにインストールできます。
# quick protoyping only: install all stable components
composer require react/react:^1.4
詳細については、ReactPHP のホームページでクイックスタートの例と使用法の詳細を確認してください。
バージョンアップグレードの詳細については、すべての ReactPHP コンポーネントの統合された変更ログも参照してください。
ReactPHP について質問があり、サポートが必要ですか?心配しないでください。私たちがお手伝いします。
最初のステップとして、各コンポーネントに付属する詳細なドキュメントを確認してください (上記の各コンポーネントの個別のドキュメントへのリンクを参照してください)。ドキュメント内で質問の答えが見つからない場合は、その質問がより多くの人に関連する可能性が高くなります。他の人も参加できるように、関連するコンポーネントの問題として質問を遠慮なく提出してください。
公式 Gitter チャット ルームもチェックしてください。このプロジェクトに関係するほとんどの人がこのチャット ルームに参加できるため、多くの質問には数分から数時間で回答されます。また、このチャット ルームはすべての新しいリリースや進行中の開発作業を発表するためにも使用されます。そのため、このチャット ルームにもう少し長く滞在することを検討してください。
Twitter で @reactphp をフォローして最新情報を入手してください。私たちはこれを主に、注目すべき大規模なアップデートに使用し、進行中の開発作業についてコミュニティに最新の情報を提供し続けるために使用します。何か共有したいことがあれば、いつでも#reactphp
ハッシュタグを使用してください。
私たちは非常にオープンなプロジェクトであり、より多くの人が参加して最良のソリューションを入手できるように、可能な限り公開コミュニケーションを好みます。同時に、いくつかのことは非公開で対処したほうがよいことも認識しています。ただ感謝を伝えたい場合でも、セキュリティ問題を報告したい場合でも、特定の機能開発のスポンサーになりたい場合でも、 [email protected]
に電子メールを送信することで、コア チームに非公開で連絡を取ることができます。私たちは小規模なボランティア チームであり、手を差し伸べてくれる人を全力でサポートすることに留意してください。
ReactPHP をサポートしますか?素晴らしい!まずは ReactPHP が素晴らしいと思う理由を世界に知らせ、他の人が ReactPHP に参加できるよう支援してみましょう。ツイートを送信したり、ブログ投稿を書いたり、地元のユーザー グループやカンファレンスで講演したり、さらには本を書いたりすることもできます。お手伝いできる方法はたくさんあります。いつでもプライベートで私たちに連絡し、サポート チャネルで他の人を助けることができます。ありがとう!
テスト スイートを実行するには、まずこのリポジトリのクローンを作成し、次に Composer を通じてすべての依存関係をインストールする必要があります。
composer install
テスト スイートを実行するには、プロジェクト ルートに移動して次を実行します。
vendor/bin/phpunit
テスト スイートには、安定したインターネット接続に依存する機能統合テストも多数含まれています。膨大な数の統合テストがあるため、これらは CI の実行中にデフォルトでスキップされます。これらを実行したくない場合は、次のように単純にスキップできます。
vendor/bin/phpunit --exclude-group internet
MIT、ライセンスを参照してください。