私はこれを使用しています tutorial 新しいWebサーバーにnginx、php、mysqlをインストールします。
チュートリアルではISPConfig3を使用しており、FastCgiとPHP-FPMのどちらを使用するかを選択できます。
どちらがいいのかしら。パフォーマンスと速度の観点から、nginxとインラインで使用するのに最適なのは2つのうちどちらですか?
ところで、サーバーでmemcachedとxcacheも有効にしています。
PHP-FPMは、PHPの古いFastCGI処理よりもはるかに優れています。 PHP 5.3.3 PHP-FPMはコアであり、古いFastCGI実装は使用できなくなりました。
私の答えは(かなり長い間オンラインになってから)反対票を投じられたばかりで、その理由を理解しているので、PHP-FPMが実際に古いFastCGI実装よりも優れている理由を以下に示します。
まず第一に、FastCGIの実装がPHPコミュニティで悪いことはかなり前から知られていました。 https:// wiki。 php.net/ideas/fastcgiwork ここで:
php-cgiは、追加の「松葉杖」がない本番環境では役に立ちません(たとえば、lighttpdディストリビューションのspawn-fcgiまたはphp-fpmパッチ)。このプロジェクトは、そのような「松葉杖」の統合と、さまざまなプロトコルをサポートするためのphp-cgiの拡張を前提としています。
- デーモン化(デタッチ、pidファイルの作成、環境変数のセットアップ、setuid/setgid/chroot)
- グレースフルリスタート
- トランスポート層を分離して改善し、さまざまなプロトコルのサポートを可能にします
- sCGIプロトコルのサポート
- hTTPプロトコルのサブセットのサポート
- …
これは、PHP-FPMが優れている点のリストであり、 http://php-fpm.org/about/ から取得したものです。
- PHPデーモン化:pidファイル、ログファイル、
setsid()
、setuid()
、setgid()
、chroot()
- プロセス管理。クエリを失うことなくPHPワーカーを「適切に」停止および開始する機能。これにより、クエリを失うことなく構成とバイナリを徐々に更新できます。
- リクエストの送信元となるIPアドレスを制限します。
- 負荷に応じた動的なプロセス数(適応プロセスの生成)。
- 異なるuid/gid/chroot/environmentおよび異なる_
php.ini
_オプションを使用してワーカーを起動します(セーフモードは必要ありません)。- ロギング
STDOUT
およびSTDERR
。- アクセラレータを使用している場合、共有メモリのオペコードキャッシュが誤って破壊された場合に、すべてのプロセスを緊急に再起動する機能。
set_time_limit()
が失敗した場合、プロセスの完了を強制します。追加機能:-エラーヘッダー-高速アップロードサポート
fastcgi_finish_request()
-バックトレース付きのSlowlog
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
fastcgi側:
php-fpm側: