2020-04-29 22:45:45
php-fpm 改めて調べる
PHP実行を効率よく捌くための何かだと思ってる
そもそもCGIってなんだっけ
CGIはWEBサーバーが外部のプログラムを実行してユーザーに返すための仕組みだそうです。CGIがなかったら index.php とかの中身がそのまま文字列かなにかで返されるはず。試してないです。
apache+PHP を試したときにはCGIなんて入れた覚えがない
apacheの場合にはmod_phpというモジュールがあってそれを使うらしい。以前試したときは無意識にそれを使ってたかもしれません。
php-fpm は何がすごいのか
公式サイトから機能を見てみると、以下のものがあるらしい
- 緩やかな (graceful) 停止/起動 機能を含む高度なプロセス管理
- 異なる uid/gid/chroot/environment でのワーカーの開始、 異なるポートでのリスン、異なる php.ini の使用 (safe_mode の代替)
- 標準出力および標準エラー出力へのログ出力
- opcode キャッシュが壊れた場合の緊急再起動
- 高速なアップロードのサポート
- "slowlog" - 実行時間が非常に長いスクリプトの記録 (スクリプト名だけでなく、PHP バックトレースも記録します。バックトレースを取得するために、 ptrace やそれと同等の仕組みを使ってリモートプロセスの execute_data を読みます)
- fastcgi_finish_request() - 何か時間のかかる処理 (動画の変換や統計情報の処理など) を継続しながら リクエストを終了させてすべてのデータを出力させるための特殊な関数
- 動的/静的 な子プロセスの起動
- 基本的な SAPI の動作状況 (Apache の mod_status と同等)
- php.ini ベースの設定ファイル
https://www.php.net/manual/ja/install.fpm.php
普段気にしてなかったけど「"slowlog" - 実行時間が非常に長いスクリプトの記録」という機能もあるらしいですね。