PHP実行環境

概要

  • php開発環境の概要をさらう

実行環境

ローカル実行環境

  • phpをローカルで実行できる環境をひとまとめにしたパッケージ

サーバ環境

  • LAMP環境
    • Linux・Apache・MySQL・PHP(or Python or Perl)
  • Nginx + PHP-FPM
    • FPM = FastCGI Process Manager
    • PHPのFastCGI 実装のひとつ
      • CGI
        • Common Gateway Interface、ウェブサーバ上でユーザプログラムを動作させるための仕組み
      • FastCGI
        • CGIの問題を解決するために Open Market社によって1990年代中頃に開発されたもの
    • 高負荷のサイトで有用な追加機能を用意

FastCGIとは

  • CGI は、ユーザーから要求がある度に、プロセスの生成と破棄を行う
  • 大量の要求があると、生成と破棄の実施によりパフォーマンスが悪化
  • FastCGI は、初回リクエスト時に起動したプロセスをメモリ上へ保持、次回流クエストからはメモリ場のプロセスを実行する
    • 動作速度、サーバ負荷を軽減

CGI版とモジュール版

  • PHP には、モジュール版とCGI版の二種類がある

モジュール版

  • webサーバのプロセスの中でphpを実行
  • Apacheがモジュール版の環境を提供する
  • サーバを動かすユーザでPHPmp動作
    • 複数ユーザの場合、セキュリティ面に問題
  • セーフモードという、ユーザ間ファイル干渉を防ぐ仕組みがある
  • 動作速度はCGI版に比べ速い

CGI版

  • 実行ファイル形式と呼ばれる
  • Webサーバーとは別のプロセスで実行
    • webサーバを動かすユーザと異なるユーザが動かす
  • 他ユーザに干渉することがない
  • 実行するたびにサーバで別プロセスを動かしメモリを使うのでモジュール版にくらべ処理速度は遅くなる
  • レンタルサーバではユーザ毎に負荷を計測しやすいのでCGI版がよく使われる
CGI形式にも二通りある
  • 参考 あなたのサイトの PHPは,CGI方式ですか? Module方式ですか?
  • php-cgiという外部プログラムを通じてphpコードを実行する場合
    • apacheがphpコードを環境変数、引数つきでphp-cgiに投げてその結果をクライアントへ返す
  • phpコード自体を実行形式とする場合
    • 「#!/usr/local/bin/php & chmod +x」のような形でapacheがPHPコードを外部で実行してhttpクライアントに返す

todo

  • webサーバの仕組みについて低いレイヤで理解する
  • php実行の仕組みについても上に同じ

参考