SAPI

Webサーバーの違いを吸収してPHPの実行環境を利用可能する

実行環境

CGI

Common Gateway Interface Webサーバー上でユーザープログラムを動作させる仕組み。 Webサーバーのプログラムから別のプログラムを呼び出し(プロセスの生成)、その処理結果をリクエストしたクライアントに送信する連携方法を取り決めた方式。

FastCGI

初回リクエスト時に起動したプロセスをメモリに保持し、次回リクエストで再利用することで、動作速度の向上とサーバー負荷の低減をおこなう。

モジュール

Webサーバーのプロセス内でPHPを実行する。 サーバーを動かすユーザーで動作するため、セキュリティ面での問題。

php-fpm

FastCGI Process Manager 高度なプロセス管理

  • 異なる uid/gid/chroot/environment でのワーカーの開始、 異なるポートでのリスン、異なる php.ini の使用 (safe_mode の代替)
  • 標準出力および標準エラー出力へのログ出力
  • opcode キャッシュが壊れた場合の緊急再起動
  • 高速なアップロードのサポート
  • “slowlog” - 実行時間が非常に長いスクリプトの記録 (スクリプト名だけでなく、PHP バックトレースも記録します。バックトレースを取得するために、 ptrace やそれと同等の仕組みを使ってリモートプロセスの execute_data を読みます)
  • fastcgi_finish_request() - 何か時間のかかる処理 (動画の変換や統計情報の処理など) を継続しながら リクエストを終了させてすべてのデータを出力させるための特殊な関数
  • 動的/静的 な子プロセスの起動
  • 基本的な SAPI の動作状況 (Apache の mod_status と同等)
  • php.ini ベースの設定ファイル