13

このチュートリアルを使用して、新しい Web サーバーに nginx、php、および mysql をインストールしています。

チュートリアルでは ISPConfig 3 を使用しており、FastCgi と PHP-FPM のどちらを使用するかを選択できます。

どっちがいいのか悩んでいます。パフォーマンスと速度の点で、nginx とインラインで使用するのに最適なのはどちらですか?

ところで、サーバーで memcached と xcache も有効にしました。

4

3 に答える 3

21

PHP-FPM は、PHP の古い FastCGI 処理よりもはるかに優れています。PHP 5.3.3 の時点で、PHP-FPM がコアに含まれており、古い FastCGI 実装は利用できなくなりました。

私の答えは (かなり長い間オンラインになった後) 反対票を投じられただけで、その理由は理解できます。PHP-FPM が実際に古い FastCGI 実装よりも優れている理由のリストを以下に示します。

まず第一に、PHP コミュニティでは FastCGI の実装が悪いことはかなり前から知られていました。https://wiki.php.net/ideas/fastcgiworkにあるドキュメントのページ:

php-cgi は、追加の「松葉杖」 (lighttpd ディストリビューションの spawn-fcgi や php-fpm パッチなど) がなければ、運用環境では役に立ちません。このプロジェクトは、そのような「松葉杖」の統合と、さまざまなプロトコルをサポートするための php-cgi の拡張を前提としています。

  • デーモン化 (デタッチ、pid ファイルの作成、環境変数のセットアップ、setuid/setgid/chroot)
  • グレースフル リスタート
  • トランスポート層を分離および改善して、さまざまなプロトコルのサポートを可能にする
  • SCGI プロトコルのサポート
  • HTTP プロトコルのサブセットのサポート
  • …</li>

以下は、http : //php-fpm.org/about/から取得した、PHP-FPM が優れている点のリストです。

  • PHP デーモン化: pid ファイル、ログファイルsetsid()、、、、setuid()setgid()chroot()
  • プロセス管理。クエリを失うことなく、PHP ワーカーを「適切に」停止および開始する機能。これにより、クエリを失うことなく、構成とバイナリを徐々に更新できます。
  • リクエストの送信元となる IP アドレスを制限します。
  • 負荷に応じた動的なプロセス数 (適応プロセス生成)。
  • 異なる uid/gid/chroot/environment と異なるphp.iniオプションでワーカーを起動します (セーフ モードは必要ありません)。
  • ロギングSTDOUTSTDERR.
  • アクセラレータを使用している場合、共有メモリ オペコード キャッシュが誤って破壊された場合に、すべてのプロセスを緊急再起動する機能。
  • 失敗した場合、プロセスを強制的に完了させset_time_limit()ます。

追加機能: - エラー ヘッダー - 高速アップロードのサポート - fastcgi_finish_request() - バックトレース付きのスローログ

于 2013-06-17T07:25:25.960 に答える
7

1 つの小さな修正: PHP FastCGI SAPI は、PHP 5.5.x でも引き続き使用できます。

[root@zulu1 ~]# /usr/local/php54/bin/php-cgi -v 
PHP 5.4.17 (cgi-fcgi) (built: Jul 18 2013 05:12:07) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
于 2013-07-18T11:07:37.873 に答える