1

私の理解では、リクエストを処理した後に FCGI_Accept() を呼び出すとすぐに、サーバーはクライアントとの接続を閉じ、そのクライアントに他のものを送信できなくなります。したがって、別のリクエストを処理した後にリクエストに応答できるように、それを防ぎ、接続を「保存」する方法があるかどうか疑問に思っています。違いがあれば、Apache で mod_fastcgi を使用する予定です。

物語:

サーバーで FastCGI を使用し、クライアント側で Ajax ロングポーリングを使用して、インスタント メッセージング システムを作成しようとしています。アイデアは、クライアントの「get」リクエストが未処理のメッセージをチェックして返すか、後で応答するために接続を保存するイベント駆動型サーバーを作成することです。「送信」要求は、受信者への利用可能な接続をチェックするか、利用できない場合はメッセージをメモリに保存します。そもそも FastCGI を使用している唯一の理由は、永続的なプロセスを使用するため、接続間でリソースを共有できるためです。他の提案も受け付けています。データベースを共有リソースとして使用し、各接続でデータベースをポーリングして新しい情報を取得するプロセスを生成できることは承知しています。これは機能しますが、非常に効率が悪いようです。

私は FastCGI の研究を始めたばかりなので、おそらくこれは私の問題に対する最も適切な解決策ではありませんが、これは私が遭遇した最初の障害です。前もって感謝します。

4

1 に答える 1

2

あなたが説明していることは、FastCGI とは何の関係もありません。これは、接続のないアーキテクチャ HTTP が機能する方法です。長いポーリング セッションは、クライアント (および最良の場合はサーバー) によって保持される必要があります。http://xmpp.org/extensions/xep-0206.htmlで読み続けてください。

より高度で新しいテクノロジーはhttp://www.websocket.org/です。

于 2012-04-25T06:22:56.070 に答える