Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Phpでアプリケーションサーバー

4,702 views

Published on

PHPでアプリケーションサーバーを書く話。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Phpでアプリケーションサーバー

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

×