デフォルトでは、Play フレームワークは組み込みの HTTP サーバー ( Nettyに基づく) を使用します。PHP と最もよく似ているのは、Play が Apache と PHP の両方であるということです。
PHP は従来の「CGI に似た」パラダイムを使用します。つまり、単一の HTTP リクエストを処理するためにプログラムが開始され、リクエストの処理が終了するとプログラムは終了します。CGI では、HTTP 要求を処理するために Web サーバーが外部プログラム (スクリプト) を開始し、その出力を返します。CGI は非常に遅いため、古いバージョンの PHP は CGI 専用に設計されており、新しいバージョンでは他の方法でサーバーと対話するように設計されていましたが、コアの原則は同じままでした。
Web アプリケーション テクノロジのほとんどは、別のアプローチを使用します。Web アプリケーションは 1 回開始され、その後実行され続けるため、実行中の Web アプリケーションの 1 つのインスタンスが引き続き要求を処理します (複数の要求を並行して処理できます)。PHP のように、単一のリクエストを処理した後に終了することはありません。これにより、毎回アプリケーションを起動するために必要なリソースを大幅に削減でき、作業が少し難しくなります。ほとんどのリクエスト処理はフレームワーク内に隠され、アプリはリクエストの到着時と戻り時に呼び出されるコントローラー メソッドのみを公開する必要があるためです。応答。
また、柔軟性が向上します。たとえば、バックグラウンド処理を Web アプリ内で直接開始でき、外部サーバー プロセスは必要ありません。Play には、これに非常に便利な Akka ライブラリがあります。
重い Web ページを毎回提供するのではなく、Ajax と REST のアプローチを使用する Web アプリケーションがますます重要になっています。また、リクエスト テクノロジー (ポーリング、ロング ポーリング、iframe とマルチパート) に関係なく、パフォーマンスの良いリアルタイム メッセージング バックエンドを PHP で作成することはほとんど不可能です。
しかし、PHP MVC フレームワークと比較すると、ビュー、モデル、およびコントローラーを作成する開発者の観点からは、Play は非常に似ています。PHP MVC フレームワークと Play フレームワークの両方で、コントローラー メソッドまたは関数が呼び出され、このメソッドは応答を返す必要があります。通常、ビューはテンプレートであり、モデルは通常、リレーショナル データベースへの ORM バインディングです。