ホームページ バックエンド開発 PHPチュートリアル Apache min 学習ノート (4) - セッション

Apache min 学習ノート (4) - セッション

Jan 18, 2017 am 09:59 AM
apache Mina session

セッションは Apache のコアです。クライアント接続が到着すると、接続が閉じられるまで新しいセッションが作成されます。セッションは接続やさまざまな情報を保存するために使用されます。

セッションには以下の状態があります:

Connected : the session has been created and is available
Idle : the session hasn't processed any request for at least a period of time (this period is configurable)

Idle for read : no read has actually been made for a period of time
Idle for write : no write has actually been made for a period of time
Idle for both : no read nor write for a period of time

Closing : the session is being closed (the remaining messages are being flushed, cleaning up is not terminated)
Closed : The session is now closed, nothing else can be done to revive it.
ログイン後にコピー

次の図はセッションの状態遷移関係を示しています:

Apache min 学習ノート (4) - セッション

以下のパラメータはセッションの設定に使用できます

受信バッファサイズ
送信バッファサイズ
アイドル時間
書き込みtimeOut

ユーザー定義属性の管理:

たとえば、セッションが確立されてからユーザーが送信したリクエストの数を追跡したい場合は、このマッピングに簡単に保存できます。キーを作成してそれを関連付けるだけです。値。

...  
int counterValue = session.getAttribute( "counter" );  
session.setAttribute( "counter", counterValue + 1 );  
...
ログイン後にコピー

キーと値のペアを使用して、セッションに属性を保存します。このキーと値のペアは、セッション コンテナーを通じて読み取り、追加、削除できます。

コンテナを定義する

前述したように、このコンテナはキー/値コンテナであり、デフォルトではマッピングになります。もちろん、他のデータ構造として定義することもできます。セッションが作成されると、コンテナを作成するためのインターフェイスとファクトリを実装できます。次のコード スニペットは、セッションの初期化中にコンテナを作成する方法を示しています (理解できません、これはどういう意味ですか?)

protected final void initSession(IoSession session,  
        IoFuture future, IoSessionInitializer sessionInitializer) {  
    ...  
    try {  
        ((AbstractIoSession) session).setAttributeMap(session.getService()  
                .getSessionDataStructureFactory().getAttributeMap(session));  
    } catch (IoSessionInitializationException e) {  
        throw e;  
    } catch (Exception e) {  
        throw new IoSessionInitializationException(  
                "Failed to initialize an attributeMap.", e);  
    }
ログイン後にコピー

。また、別の種類のコンテナを定義したい場合に実装できるファクトリ インターフェイスは次のとおりです:

public interface IoSessionDataStructureFactory {  
    /** 
     * Returns an {@link IoSessionAttributeMap} which is going to be associated 
     * with the specified <tt>session</tt>.  Please note that the returned 
     * implementation must be thread-safe. 
     */  
     IoSessionAttributeMap getAttributeMap(IoSession session) throws Exception;  
 }
ログイン後にコピー

フィルタリングチェーン

各セッションは、受信リクエストまたは送信データを処理するためにいくつかのフィルタチェーンに関連付けられます。各セッションには個別のフィルター チェーンが指定され、ほとんどの場合、セッション間で同じフィルター チェーンの多くが使用されます。

統計

Each session also keep a track of records about what has been done for the session :

number of bytes received/sent
number of messages received/sent
Idle status
throughput

and many other useful informations.

Handler
ログイン後にコピー

最後になりましたが、プログラム メッセージを処理するにはハンドラーをセッションにアタッチする必要があります。このハンドラーは、単に write メソッドを呼び出すだけで、応答としてパッケージも送信します:

...  
session.write( <your message> );  
...
ログイン後にコピー

上記は、Apache Min 学習ノート (4) - セッションの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト ( www.php.cn )!


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ApacheでCGIディレクトリを設定する方法 ApacheでCGIディレクトリを設定する方法 Apr 13, 2025 pm 01:18 PM

ApacheでCGIディレクトリを設定するには、次の手順を実行する必要があります。「CGI-Bin」などのCGIディレクトリを作成し、Apacheの書き込み許可を付与します。 Apache構成ファイルに「Scriptalias」ディレクティブブロックを追加して、CGIディレクトリを「/cgi-bin」URLにマッピングします。 Apacheを再起動します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

Apacheバージョンを表示する方法 Apacheバージョンを表示する方法 Apr 13, 2025 pm 01:15 PM

Apacheサーバーでバージョンを表示するには3つの方法があります。コマンドライン(Apachectl -vまたはapache2ctl -v)を介して、サーバーステータスページ(http://&lt; server ipまたはdomain name&gt;/server -status)を確認します。

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

Apacheバージョンを表示する方法 Apacheバージョンを表示する方法 Apr 13, 2025 pm 01:00 PM

Apacheバージョンを表示する方法は? Apache Serverを起動する:sudo service apache2を使用してサーバーを起動します。バージョン番号の表示:次のメソッドのいずれかを使用してバージョンを表示します。コマンドライン:apache2 -vコマンドを実行します。サーバーステータスページ:WebブラウザーでApacheサーバーのデフォルトポート(通常80)にアクセスすると、バージョン情報がページの下部に表示されます。

Apache用のZendを構成する方法 Apache用のZendを構成する方法 Apr 13, 2025 pm 12:57 PM

ApacheでZendを構成する方法は? Apache WebサーバーでZend Frameworkを構成する手順は次のとおりです。ZendFrameworkをインストールし、Webサーバーディレクトリに抽出します。 .htaccessファイルを作成します。 Zend Application Directoryを作成し、index.phpファイルを追加します。 Zend Application(Application.ini)を構成します。 Apache Webサーバーを再起動します。

Apacheを開始できない問題を解決する方法 Apacheを開始できない問題を解決する方法 Apr 13, 2025 pm 01:21 PM

Apacheは、次の理由で起動できません。構成ファイル構文エラー。他のアプリケーションポートとの競合。権限の問題。メモリから。デッドロックを処理します。デーモン障害。 Selinux許可の問題。ファイアウォールの問題。ソフトウェアの競合。

Apacheのサーバー名以上の削除方法 Apacheのサーバー名以上の削除方法 Apr 13, 2025 pm 01:09 PM

Apacheから追加のservernameディレクティブを削除するには、次の手順を実行できます。追加のservernameディレクティブを識別して削除します。 Apacheを再起動して変更を有効にします。構成ファイルを確認して、変更を確認します。サーバーをテストして、問題が解決されていることを確認します。

See all articles