2

私は、大量の大きな (250MB 以上の) ファイルを処理するファイル アップロード API の技術仕様を検討中です。

可能な限り回避したいのは、ファイルのアップロード中に Web サーバーがメモリの全負荷を消費することです。これは、ある程度回避できることがわかっています。

また、Flash や Silverlight を使用してファイルを分割することもできません。これにより、メモリ使用量が大幅に減少する可能性があります。

PHP は、アップロードのパフォーマンスがホスト Web サーバー ソフトウェアに大きく依存していることを理解しています。これを念頭に置いて、Apacheは仕事に最適ですか、それともnginxなどを検討する必要がありますか?

PHP 自体が最大のボトルネックである場合、ある種のハイブリッド ソリューションを検討する価値はありますか? もしそうなら、それは何語ですか?

4

3 に答える 3

2

Daniel Ribeiroが言っていることにもかかわらず、これらのアップロードをApacheから十分に遠ざけることをお勧めします。イベントベースのサーバーが必要です(Apacheの実装は優れていますが、IMHOはnginx / lighttpdほど洗練されていません)。問題は間接的にのみメモリになります-それはクライアントの数と帯域幅に関するものです。ファイルを分割しても、実際には役に立ちません。

OTOHは、nginxを使用してアップロードを処理し、apacheを使用してサイトの残りの部分を提供することを妨げるものは何もありません。

LFNを処理するようにTCP/IPスタックを調整することで多くのメリットが得られます(大きな輻輳ウィンドウ、tcpウィンドウスケーリング)。

PHPは、アップロードのパフォーマンスをホストWebサーバーソフトウェアに大きく依存していることを理解しています

バックエンドでPHPを使用してrawソケット/Webソケットを使用してアップロードを実装しようとしない限り、アップロードのパフォーマンスはPHPとは関係ありません。実際、nginxから(フォーク)PHPインタープリターを呼び出してファイルを処理することは理にかなっています-これはファイルがアップロードされたときにのみ開始されるためです

于 2012-04-12T16:18:53.540 に答える
1

Apache と Nginx の両方を一緒に使用できます。これは本当に素晴らしいことです。

2つの比較は次のようになります。

  • Apache はプロセスベースのサーバーです。イベントベースのサーバー nginx。
  • Nginx と Lighttpd は、おそらく最もよく知られている 2 つの非同期サーバーです。
  • Apache は間違いなく最も有名なプロセスベースのサーバーです。

詳細はこちら

于 2012-04-12T16:01:28.667 に答える
1

PHPを介してアップロードを渡すことを避けることができるので、ファイルアップロードモジュールでnginxを使用することを検討します。

于 2012-04-12T16:03:41.510 に答える