Submit Search
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
•
37 likes
•
10,086 views
Hisateru Tanaka
Follow
第21回関西PHP勉強会 発表スライド + ベンチマークデモ入れ込み
Read less
Read more
Gallery
Report
Share
Gallery
Report
Share
1 of 30
Download now
Download to read offline
More Related Content
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
1.
ReactPHPは もっと流行って欲しい 1CPUあたり500req/sを超えるHelloWorldを 実装する方法について
2.
たなかひさてる @tanakahisateru Pinoco developer PHPTAL contributor Firebug
translation contributor Yii framework user PhpStorm user フルスタックエンジニア(笑)
3.
ReactPHP • PHPでNode.jsのようなノンブロッキングI/O • ひとつのプログラムがメモリに常駐 •
I/O待ちの間に別のイベントの処理を同一プロセス 内で実行 • というわけでプロセス数に対する効率が非常に高い 並列処理が可能
4.
例としてreact-httpで
5.
普通のPHP
6.
react-http
7.
毎回やること 最初だけやること 初期化前倒し PHP react-http
8.
これまでPHPerが知っていたそれ は、他の言語からすれば全然マイ クロフレームワークじゃなかった
9.
Hello World デモ
10.
Silex nginx php-fpm
11.
Silex nginx php-fpm
12.
Silex nginx php-fpm 228.54
trans/sec
13.
react-http nginx メンテ状況微妙なespressoをreact-0.4で動くようにして利用 espressoはSilexをベースにしたreact-httpのWAFです
14.
react-http nginx
15.
react-http nginx 734.81 trans/sec
16.
通常の3倍
17.
ちなみに…
18.
<?php echo
19.
<?php echo 1735.65 trans/sec
20.
<?php echo 最強
21.
まあネタはこのぐらい にして
22.
速さではない 本当のメリット
23.
レスポンス完了 …のあと、裏でやって おけばいいこと
24.
応用アイデア • サイト上で他の多くのユーザーにプッシュ通知が発 生するイベントが起きる • イベントを起こした人にはレスポンスを返してしま い、その後で通知を分散処理
(react-zmq) • 他のWeb SocketホストはすべてPub/Subで受ける • レスポンス後でいいタスクは細切れのジョブにして、 それを複数のワーカーが1件づつ取って処理する
25.
というわけで HelloWorld とかどうでもいいです
26.
本当は • PHPのWebページはロードバランサーで簡単にス ケールアウト可能 →
Reactそんなに嬉しくない • バックエンド側で、ユーザーへのレスポンスより遅 れてもいい、高負荷なタスクのための内部REST等 に使う • 裏でボトルネックになるシステム(ジョブキューの 受付など)が大量の同時接続を処理したい時に有効
27.
Webページには ReactPHP不要 • PHPのメリット =
レスポンスを返せばすべて終わり • 次のリクエストはすべて空っぽの状態から始まる、だ からPHPは安全で開発しやすい • レスポンスを返すのが目的の本質なら、普通にPHPの フルスタックフレームワークを使うべき • でも、PHPの便利さを犠牲にしてでも、初期化の前倒 しによる高速化と大量同時接続の受付が必要なとき…
28.
• Node.js →
コールバック地獄かPromise地獄、一瞬でも同 期I/Oが許されないきつさ • Go → ライブラリが… • Erlang → 文法が… • Scala Actor → コンパイル…JVM… • PHP → みんなだいすき♪ サイト用のライブラリが再利用できる サイトと同じツールで開発できる 一瞬で済むなら同期I/Oしてもいいよね、よね
29.
注意したいこと • ずっとメモリに常駐するので、ヘタすると普通PHPでは起きないよ うなメモリリークが起きます。たまに再起動する必要があるかも • リクエストがクラスを専有できないからstatic使うライブラリはダ メです(I/O待ちに入ったら別のリクエストにstaticやシングルトン を上書きされちゃう) •
Laravel、Yii、FuelPHP、あとCake3のコードの再利用はたぶんア ウト • で、SymfonyのHttpKernelはいけるので、ここに来てSilexが急浮 上することになります → GitHubで php-pm 参照
30.
こんなReactPHPのことを 喋ってみたい人はぜひ、 PHPカンファレンス関西へ
Download now