問題タブ [scgi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - scgi と wsgi の違いは何ですか?
これら2つの違いは何ですか?どちらが優れている/速い/信頼できる?
sockets - ポート上の FastCGI とソケット上の FastCGI
今日、Cherokee で Django を (SCGI を使用して) セットアップしていましたが、Django のドキュメントには、Web サーバーと Django 間の通信にホスト/ポートの組み合わせまたはソケットのいずれかを使用できると書かれていることに気付きました。
この問題について彼らが言わなければならない唯一のことは、
何を選択するかは好みの仕方です。通常、許可の問題により、TCP ソケットの方が簡単です。
(ちなみに、これをソケットで行う際にパーミッションの問題がありましたが、ホストではそうではありません:)。)
システム プログラミングの授業でソケットがどのように機能するかは漠然と覚えていますが、この 2 つの実質的な違いは何なのか、非常に興味があります。何かを選択するときはいつでも、その問題について意見を持っている人がいるので、私はそれを得ることを望んでいました. 特に性能差はありますか?
または、それがまったく問題にならない場合は、確認が必要なので、プログラミングを続行し、このsysadmin-yのものを無視できます.
http - クライアントが切断されたときに HTTP プロキシ/FastCGI/SCGI が接続を閉じない - バグまたは機能?
私は長い XMLHttpRequest ポーリングを介してCppCMSフレームワークのコメット サポートに取り組んでいます。多くの場合、そのようなリクエストは、サーバーからの応答が返される前にクライアントによって閉じられます。たとえば、ページが閉じられたり、ユーザーが他のページに移動したり、ページが更新されたりします。
サーバー側では、接続が切断されたという通知を受け取ることを期待しています。FastCGI、SCGI、シンプルな HTTP プロキシの 3 つのコネクタを介してアプリケーションをテストしました。
3 つの主要な UNIX Web サーバー、Apache2、lighttpd、および Nginx から、最後の 1 つだけが期待どおりに接続を閉じ、アプリケーションが待機キューから要求を削除できるようになりました。これは、FastCGI コネクタと HTTP プロキシ コネクタの両方で機能しました。(Nginx にはデフォルトで scgi モジュールがありません)。
その他、Apache と Lighttpd は、接続を閉じたり、切断されたクライアントについてバックエンドに通知したりせず、クライアントがまだオンラインであるかのように処理を進めます。これは、サポートされている 3 つの API (FastCGI、SCGI、および HTTP プロキシ) すべてで発生します。
私はLighttpdの問題をオープンしましたが、さらに気になるのは、Apache -- lighttpd として成熟し、十分にサポートされている Web サーバーであり、クライアントが行ったサーバー バックエンドを公開していないという事実です。
質問:
- これはバグですか、それとも機能ですか? Web サーバーとアプリケーション バックエンド間の接続を閉じない理由はありますか?
- FastCGI/SCGI/HTTP-Proxy バックエンドを介してこれらのサーバーの背後で動作する実際の Comet アプリケーションはありますか?
- 上記が当てはまる場合、彼らはこの問題にどのように対処しますか? すべての接続を 10 秒ごとにタイムアウトできることは理解していますが、クライアントがリッスンしている限り、それらをアイドル状態に保ちたいと考えています。
ありがとう!
python - FlupとCherokeeを使用したDjango-Mingusのデプロイで問題が発生しました。奇妙な管理者の行動
djangoの統合開発Webサーバーで完全に正常に動作しているdjango-mingusブログがあります。virtualenvにインストールされます。
cherokee 0.99.42のdjangoアプリウィザードを使用してデプロイすると、管理パネルに奇妙な動作が表示されます。すべてのアプリが管理パネルに表示される場合と、アプリのサブセットのみが表示される場合があります。メインの管理者ビューから消えるのは常に同じアプリです。
manage.py runfcgiコマンドは、virtualenvにインストールされているpythonインタープリターを介して起動されます。
そのような問題を追跡する方法はありますか?正しく設定されていない環境変数に関連している可能性がありますか?
編集:これは循環インポートの問題でしょうか?
2番目の編集:同じ問題がnginxでも発生します。./manage.pyrunfcgiコマンドにDebug=Trueを追加すると、セットアップが安定します。
cgi - WebSocket および CGI/FastCGI/SCGI プロトコル
クライアント側の Web ソケット、Web サーバー、および CGI、FastCGI、または SCGI プロトコルの背後で動作する実際のアプリケーション バックエンド間の相互作用に関するリソースを探しています。
次のように、これは現時点では不可能のようです。
リクエストの長さはCONTENT_LENGTH
変数で明確に定義されているため、データが標準入力からWebサーバーから引き続き送信されるとは期待できませんか? unsetCONTENT_LEGTH
はリクエストなしのボディを定義します。
アプリケーションはCONTENT_LEGTH
これ以上日付のバイトを読み取る必要がなく、読み取りが少ない場合は切断されたクライアントと見なされます。
- (F|C)CGI の更新方法や WebSocket での使用方法に関するリソースはありますか?
- WebSocket をサポートするための SCGI/FCGI/CGI 仕様のドラフトはありますか?
- WebSockets をサポートする既知の Web サーバーはありますか?
- もしそうなら、それらは *CGI プロトコルをサポートしていますか?
- WebSocket と *CGI を使用した経験はありますか?
ありがとう、すべての情報は適切です。
アルチョム
誰か?
c# - SCGI スクリプト エンジン サーバー? (C#、Java、PHP)
SCGI サーバーを提供するスクリプト エンジンを探しています。
- Apache のようなサーバーは HTTP リクエストを受け取り、バックエンドのスクリプト エンジンに送信します。
- スクリプト エンジンは SCGI リクエストを解析して処理し、応答を Apache に送信します。
- Apache はクライアントに応答を送信します。
私は C#、Java、および PHP (これら 3 つのいずれか) の使用に興味があり、関連するリソース (コードへのリンクだけでなく、これをすべて連携させるためのハウツー) を見つけたいと考えています。
ありがとう!
sockets - FastCGI / SCGI プリフォーク
私は (楽しみと教育目的で) Web サーバー ゲートウェイを実装しようとしてきましたが、フォーク前のモデルに関して FastCGI/SCGI の背後にあるコア アーキテクチャについていくつか質問があります。
FastCGI/SCGI 実装は、フォーク前のシナリオで通信をどのように処理しますか? 私の知る限り、ゲートウェイには FastCGI サーバーに接続するためのソケットが 1 つしかありません。通常、ゲートウェイからの接続を受け入れ、事前にフォークされたワーカーの 1 つに作業を渡す親プロセスがあります。
子がフォークされた後に接続が確立されるため、子にこれらのソケットを使用してゲートウェイと通信させるにはどうすればよいでしょうか?
node.js - node.jsを使用してscgiのClientRequestを作成する
http.request
のインスタンスを返す、のscgiバージョンを作成したいと思いますhttp.ClientRequest
。もちろん、私は同等のものを書きますが、scgi用です。
何を拡張するのか、どこから始めればよいのか疑問に思っています。私はscgiの部分を処理できますが、それを実装する方法を考えているだけで、多かれ少なかれの代わりになりhttp.request
ます。言い換えれば、同じように使用されます。
django - Web フレームワークが HTTP ではなく FastCGI/SCGI 経由でサービスを提供するのはなぜですか?
主要な Web フレームワーク (Django、Pyramid、Rails など) は、フロントエンドとして機能する nginx などの別の Web サーバーを使用して、永続的なサーバーとして実行されることがよくあります。Web サーバーは、FastCGI や SCGI などのプロトコルを介して接続します。
これは複雑に思えます。バックエンドが独自の HTTP サーバーを実行できるのに、なぜリクエストがまったく異なるプロトコルに変換されるのでしょうか?
このアプローチは、トランスポート プロトコルが 1 つしかなく、それが RFC であるため、より単純で柔軟性があるように見えます。
ただし、Web フレームワークが http のみの設計を奨励しているのを見たことがないと思うので、それには理由があるに違いないと思います。
ここで FastCGI/SCGI のようなプロトコルを使用する利点は何ですか?
http - FCGI / SCGI: マルチプロセッシングに関する理論的なもの
FastCGI / SCGI (独立実装) サーバーを作成しようとしていますが、ネットワーク化された、特に遅延アプリケーション プログラミングの経験があまりありません。
やりたいことを詳しく考えると理論的な問題が出てきました。Web サーバーが TCP 要求をサーバーに送信すると、入力 (バイト) が現在のハンドラー (FastCGI / SCGI ハンドラー) に処理されます。問題は、応答の作成に時間がかかる場合はどうなるかということです。クライアントが約 10MB の大きなファイルを要求したとします。10MB がクライアントにフラッシュされるまでサーバーが待機する必要があるというのは正しいですか? 結論は次のとおりです。クライアントのインターネット接続が低い場合、サーバーは 10MB が完全にフラッシュされるまでブロックされますね。
たとえば、SQL ステートメントを実行する必要があるプロセス要求についてはどうでしょうか。時間がかかります。今回はサーバーがブロックされますよね?私を修正してください。
この問題を解決するために、私の唯一のアイデアはスレッドを使用することです - そして、私はそれらの経験があまりありません。SCGIプロトコルを正しく理解していれば、スレッドは解決策ではなく、リクエストに対する即時の応答が期待されます。request-ids をサポートする FastCGI の代わりに。あなたの解決策は何ですか?