2009-09-23 7 views
15

それでは、もっと軽くしましょう:cgi(共通ゲートウェイインターフェイス)は遺産ですか?cgiは死んでいますか?

はい?いいえ?

今日(どのシステムでもレガシーシステムやライブラリと対話する必要がない)今日のプロジェクトはどのような状況でcgiを使用しますか?

+0

コンピュータで生成された画像?私は彼らがまだかなり使用されていると言います; – Aistina

+0

共通ゲートウェイインターフェイス – flybywire

+4

le CGI est mort! Vive le FCGI! – beggs

答えて

10

実際には死んでいません。オーバーヘッドにもかかわらず、多くの仮想Webホスティング企業は、suEXECで使用できるため、PHPをCGIとしてセキュリティ上考慮しています。 suEXECはあなたのスクリプトがあなたの実際のUnixユーザ権限のもとで実行されることを意味し、オペレーティングシステムの権限分離によって制限されます。これはです。 PHP固有のopen_basedirよりも堅牢なセキュリティモデルです。

また、CGIはとなります。実際にはのシンプルで汎用性の高いインターフェイスで、Webサーバーからは絶対に外出できません。 FastCGIやSCGIのような新しいインターフェースは、CGIがHTTPヘッダーやその他の変数をWebアプリケーションに渡して戻す方法を継承します。 PHPのSAPIでも、$_SERVER変数でこれを模倣しています。だから、CGIは去っていくのではなく、ちょうどその上に建てられています。

+2

suexecを介してFastCGIを実行することも、ウェブサーバの外部に完全に存在するプロセスマネージャを使用してFastCGIを実行することも同様に可能で、PHPのFastCGIのサポートが組み込まれています。未来の未来の指標。 :) – hobbs

0

CGIは、高性能にはあまり適していません。

私のアドバイスは、それを無視して、複数のSAPIをサポートする言語やライブラリを作成し、それぞれの状況に適したものを使用することです。

+0

ここでパフォーマンスは実際には問題にはなりません。主な問題は、永続オブジェクトを使用するのが難しいことです。プロセスが常に消滅するためです。 –

1

極端な計算性能が必要なのはどうですか?

+0

CGIはパフォーマンスにはあまり適していません。 –

+3

CGI(高速CGIではない)は、一般にウェブの最適化がないため(ウェブによって設計された言語によって書かれている可能性が高いため)、パフォーマンスには一般的ではありません。しかし、あなたのCGIが計算量が少なく、インタラクションが少なく(Webサービスは少ないがコンピューティングが多い)、コンパイル済みのネイティブ言語で書かれたCGIは間違いなく実行されます。それで私は「計算能力」という言葉を使うのです。しかし、やはりこの種の仕事はまれです。 – NawaMan

1

かなり死んではありません。しかし、fcgiははるかに良いアプローチのように見えます。 Apacheなどで正式にはサポートされていませんが。あなたがそれを動作させるためにサイドモッズを使用する必要があります。

+0

...これは非常に深刻な考慮事項で、そこにApacheを実行しているWebサーバーの割合を考慮しています。 – Thomi

+0

lighttpdがかなり人気を集めています – Roch

8

レガシー?絶対に。デッド?まあ、それは人生の支援にあります。私はそれが本当に "死ぬ"ことは間違いないと思う。 CGIを使用してと書いても、の小さなスクリプトがあるかもしれません.Webアプリケーションを実行する他の方法がないサーバーがあり、それを設定するのが面倒だとしたら。

もう一つの理由は何ですか?おそらく、あなたはふるいのようなメモリやリソースを漏らすプログラムを持っていますが、とにかくそれを実行する必要があるので、すべての要求が処理されるようにすべてのプロセスが終了するようにしてください...

しかし、実際にはという問題があります。永続的なプロセスを持つシステムに移行することのメリットは、コストをかなり上回るものです。私の経験では、CGI環境では、うまくモジュール化されたアプリケーションを作成するために必要な初期化のために、「受け入れがたい起動時間」に変換されるため、より整理されたコードを書くことが奨励されています。

1

私はCGIも死んだとは考えていません。結局のところ、それはすべての主要なWebサーバーによってサポートされています。

CGIプロジェクトを開始するために言及されていない1つの理由は、知的財産保護の可能性があります。たとえば、C++でCGIプログラムを作成し、顧客が管理していないサーバーにアプリケーションをインストールできるようにすることができます。

あなたのレガシー製品には、数多くのビジネスがライブラリとして実装されている可能性があります。 (.dll、.so .lib .aなど)この場合、Webインターフェイスを実装する際には、実際にc/C++に固執する方が速いかもしれません。

おそらく、あなたはDelphiの店で働いていますか?あなたのショップのエンジニア10人のうち10人がDelphiを書いている場合は、PHPで新しいアプリケーションを書くことが市場への最速の道ではないかもしれません。

何ハイテクがあなたのために含めた新製品の使用を決定するときに、短いでは、多くの変数が遊びに来る:あなたの顧客の

  • を?
  • あなたの出発点は何ですか?
  • あなたの資産とリソースは何ですか?
  • 何をお楽しみください?
  • ソフトウェアとのインターフェイスは何か?
  • アプリケーションはどのように展開されますか?
関連する問題