PHP Apacheモジュール版 CGI版 CLI版 
2014/03/26 Wed.
PHPの動作モードの違いがごっちゃになっていたのでちょっと整理。
CGIとCLIを混同していたが、ざっくり分けると次のグループになる。
●WEBアプリケーション動作
・Apacheモジュール版
・CGI(Common Gateway Interface)
●コマンドライン実行
・CLI(Command Line Interpreter/Interface)
このグループ分けの根拠は「HTTPヘッダー」を出力するかしないか。
前者が出力をし、後者は出力しません。
ただし、CGI版の実行時に「-q」オプションをつけることでHTTPヘッダーの出力を抑制し、CLIとして実行することもできる。
この辺のことは、CGIとCLIの意味の違いを理解していればこだわることではないだろう。
では、Apacheモジュール版とCGI版を分ける理由はなんだろう?
CGIとCLIを混同していたが、ざっくり分けると次のグループになる。
●WEBアプリケーション動作
・Apacheモジュール版
・CGI(Common Gateway Interface)
●コマンドライン実行
・CLI(Command Line Interpreter/Interface)
このグループ分けの根拠は「HTTPヘッダー」を出力するかしないか。
前者が出力をし、後者は出力しません。
ただし、CGI版の実行時に「-q」オプションをつけることでHTTPヘッダーの出力を抑制し、CLIとして実行することもできる。
この辺のことは、CGIとCLIの意味の違いを理解していればこだわることではないだろう。
では、Apacheモジュール版とCGI版を分ける理由はなんだろう?
その2者を比較した場合、Apacheモジュール版のほうが優れているみたい。
自分でサーバーを立ち上げ、それを自分だけが使う場合、何も考えずにApacheモジュール版の一択だと思う。
ではでは、なぜにCGI版が??
これは、レンタルサーバーのように複数ユーザーがPHPスクリプトを実行するような環境の場合に有利なようです。
ただ、ここで言う有利とは、速度やメモリといった実行能力の面ではなく、管理者の管理面での話。
というのも、
ApacheモジュールとしてPHPを起動した場合、PHPスクリプトはApacheと同じプロセスとして動作します。
CGI版はApacheとは別のプロセスとして動作します。
つまり、誰かのPHPプログラムが暴走した場合、管理者がその暴走PHPを止めようと思ったとき、Apacheモジュール版だとApacheが暴走しているように見えるうえ、Apacheを止めると大勢に影響が出る。
CGI版なら暴走しているプロセスをKILLしてしまえばいい。
ということのようです。
この認識であってるのかなあ?
自分でサーバーを立ち上げ、それを自分だけが使う場合、何も考えずにApacheモジュール版の一択だと思う。
ではでは、なぜにCGI版が??
これは、レンタルサーバーのように複数ユーザーがPHPスクリプトを実行するような環境の場合に有利なようです。
ただ、ここで言う有利とは、速度やメモリといった実行能力の面ではなく、管理者の管理面での話。
というのも、
ApacheモジュールとしてPHPを起動した場合、PHPスクリプトはApacheと同じプロセスとして動作します。
CGI版はApacheとは別のプロセスとして動作します。
つまり、誰かのPHPプログラムが暴走した場合、管理者がその暴走PHPを止めようと思ったとき、Apacheモジュール版だとApacheが暴走しているように見えるうえ、Apacheを止めると大勢に影響が出る。
CGI版なら暴走しているプロセスをKILLしてしまえばいい。
ということのようです。
この認識であってるのかなあ?
- 関連記事
category: サーバー
この記事へのコメント
コメントの投稿
コメントは全て管理人が内容を確認してから表示されます(非公開コメント除く)。
内容によっては表示されない場合がありますことご了承願います。
内容によっては表示されない場合がありますことご了承願います。