Phpでアプリケーションサーバー
Click here to load reader
-
Upload
k-motoyan -
Category
Technology
-
view
3.806 -
download
1
Transcript of Phpでアプリケーションサーバー
![Page 1: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/1.jpg)
アプリケーションサーバーを作ろう
![Page 2: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/2.jpg)
自己紹介
@motoyan_k
Haxeというプログラミング言語がお気に入りのプログラマ。
普段はRails書いてます。
僕にとってのPHPは戦友みたいなものです。
![Page 3: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/3.jpg)
モチベーション
● PHP7の登場でPHP自身の速度が十分に早くなった。
● PHPのバックエンドの実装はapacheかphp-fpmぐらいしかなくちょっと寂しい現状。
● ReactPHPとかあるし、PHP単体でアプリケーションサーバーが書かれた実績はあ
る。
![Page 4: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/4.jpg)
そうだ、
PHPでアプリケーションサーバーを書いてみよう!
![Page 5: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/5.jpg)
PHPでもWEBサーバーは作れる
![Page 6: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/6.jpg)
ノンブロッキングIOも出来る
![Page 7: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/7.jpg)
プロセスもつくれるんです
![Page 8: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/8.jpg)
PHPでアプリケーションサーバーを作る意義
● アプリケーションサーバーをPHPで書けばPHP書ける人がメンテナンス出来るよ
ね?
● apacheやphp-fpmに依存してたプロセス戦略がPHPコードで実現出来るようにな
る。
● ライブラリ化して、composerなどで配布することでアプリケーションサーバーの挿げ
替えが簡単になる。
![Page 9: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/9.jpg)
DEMO複数のプロセスをスタンバイさせる簡易的なアプリケーションサーバーで、
Silexを動かすデモ。
![Page 10: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/10.jpg)
問題点
![Page 11: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/11.jpg)
既存アプリケーションの実装
● StaticClassに変更可能な状態を持たせていたりしませんか?
● 既存のフレームワークはどうだ?(流石に大丈夫だとは思うが)
![Page 12: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/12.jpg)
既存アプリケーションの実装
● そもそもStaticClassに状態を持たせていることがおかしい。
● こうなっていた場合、実装者は悔い改めましょう。
![Page 13: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/13.jpg)
$_XXX系の変数
● PHPでサーバーを書く場合、CLIから起動することになるが、CLIから起動した場合
は$_XXXといった変数は自前で初期化しないといけない。
● プロセス内スレッドでノンブロッキング処理とかやったら不具合起きるんじゃない
か?
![Page 14: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/14.jpg)
$_XXX系の変数
● headerを自前でパースするとかすればなんとかなる。
● ノンブロッキングモデルは厳しい…
![Page 15: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/15.jpg)
CLI SAPIの問題
![Page 16: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/16.jpg)
CLI SAPIの問題
● 既存のPHP実装でheader関数を利用していないケースはほぼ無い。
● PHPでアプリケーションサーバーを書いても、既存フレームワークなどで正確に動
作させることは難しい(´・ω・`)
![Page 17: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/17.jpg)
現状のPHPでの落とし所
● ノンブロッキングは諦める。
● 謎のエクステンションをつかってheader関数を書き換える。
● 既存の実装を全部捨てて、アプリケーションサーバー用に全部自前で実装し直す。
![Page 18: Phpでアプリケーションサーバー](https://reader038.fdocuments.net/reader038/viewer/2022100802/5878f5af1a28ab49608b557f/html5/thumbnails/18.jpg)
ありがとうございました。
PSRにアプリケーションサーバー用インターフェースの話が欲しいね …