セッションハンドリング

提供:MoodleDocs
移動先:案内検索


管理者はサイト管理の 'セッションハンドリング' で以下の設定を変更できます。

Moodleサーバに誰かがログインした場合、サーバがセッションを開始します。セッションデータによりサーバはユーザが別のページにアクセスするときにユーザを追跡できます。

セッション情報にデータベースを使用する

Moodleはセッションデータを何らかのストレージに保存する必要があります。デフォルトでは、ファイルまたはデータベースセッションストレージが選択されています。このオプションを使用すると、管理者はストレージを変更できます。大規模なインストールでは、以下で説明するmemcachedドライバを使用する必要があります。

このオプションは、config.phpファイルで$ CFG-> session_handler_classを設定すると表示されなくなることに注意してください。

タイムアウト

ここで設定した時間内にユーザが新しいページをロードしない場合、Moodleはセッションを終了してログアウトします。

この時間枠は、教師が提供できる最も長いテストをカバーするのに十分な長さであることを確認してください。テスト中に生徒がログアウトすると、テストの質問に対する生徒の応答が失われる可能性があります。

クッキー接頭辞

同じサーバ上で複数のMoodleサイトを実行しているのでない限り、ほとんどの場合、これを空白のままにすることができます。この場合、各Moodleサイトがセッションを追跡するために使用するクッキーの名前をカスタマイズする必要があります。これにより、同時に複数のMoodleサイトにログインできます。

注:「クッキー接頭辞」または「クッキーパス」を変更した場合、変更はすぐに有効になるため、再度ログインする必要があります。

クッキーパス

このMoodleインストールへの相対パス。これを使用して、Moodleセッションクッキーを親ディレクトリに強制的に送信できます。無効な値は自動的に無視されます。

クッキードメイン

これは、サーバドメインだけでなく、上位のドメインにセッションクッキーを送信するために使用できます。これは、一部のSSOソリューションに役立つ場合があります。無効な値は自動的に無視されます。

セッションドライバ

ユーザセッションは、異なるバックエンドに保存される場合があります。セッションドライバは、config.phpファイルでのみ構成できます。config-dist.phpファイルの例を参照してください。

Memcachedセッションドライバ

Memcachedセッションドライバは最速のドライバです。外部のmemcachedサーバとmemcached PHP拡張が必要です。サーバクラスタノードは、共有セッションストレージを使用する必要があります。

config.phpの設定オプション: $CFG->session_handler_class = '\core\session\memcached'; $CFG->session_memcached_save_path = '127.0.0.1:11211'; $CFG->session_memcached_prefix = 'memc.sess.key.'; $CFG->session_memcached_acquire_lock_timeout = 120; $CFG->session_memcached_lock_expire = 7200; // memcached拡張機能<= 2.1.0の場合は無視されます

ノート:

  • memcachedサーバに十分なメモリがあることを確認してください。
  • 1つのサーバに複数のMoodleサイトからのセッションを保存する場合は、異なるプレフィックスを使用してください。
  • インストールされているPECL memcached拡張バージョンが2.2.0未満の場合、ロックは他のドライバとは異なる働きをします-ロックはタイムアウトの終わりに期限切れ/解放されます-MDL-42485を参照してください。
  • セッションとMUCの両方に同じmemcachedサーバを使用しないでください。 MUCキャッシュの削除をトリガーするイベントは、MUCがmemcachedサーバを削除することにつながり、すべてのセッションが終了します。
  • $CFG->session_memcached_number_of_replicasオプションはサポートされなくなりました。

Windowsユーザの場合、PHP.netはmemcacheのバイナリのみを提供し、memcachedは提供しません。 (http://windows.php.net/downloads/pecl/releases/)

(2.7以降、memcacheセッションの処理には2つの異なる要素が存在します-MDL-42011を参照してください-何らかの理由でOUがprefix / lock_expireを使用していないようです...上記のconfig.phpはmemcache(d)のスペルです。)

ファイルセッションドライバ

このドライバは、新規インストールではデフォルトで使用されます。

config.phpの設定オプション: $CFG->session_handler_class = '\core\session\file'; $CFG->session_file_save_path = $CFG->dataroot.'/sessions';

ノート:

  • ファイルベースのセッションには、ファイルロックをサポートするファイルシステムが必要です。

データベースセッションドライバ

このタイプのドライバは、Moodle 2.0-2.5ではデフォルトで使用されていました。

$CFG->session_handler_class = '\core\session\database'; $CFG->session_database_acquire_lock_timeout = 120;

ノート:

  • DBセッションはMyISAMデータベースエンジンと互換性がありません。
  • MySQL / MariaDBを使用している場合、my.cnf(またはmy.ini)の\ 'max_allowed_pa​​cket \'が少なくとも4Mであることを確認してください。
  • パフォーマンスは比較的低く、大規模なサイトには推奨されません。

Redisセッションドライバ

RedisセッションドライバはMoodle 3.1.3以降で利用可能です(MDL-54606を参照)。 Redisサーバ Redis拡張が必要です。

config.phpの設定オプション: $CFG->session_handler_class = '\core\session\redis'; $CFG->session_redis_host = '127.0.0.1'; $CFG->session_redis_port = 6379; //オプション $CFG->session_redis_database = 0; //オプション、デフォルトはdb 0 $CFG->session_redis_auth = ; //オプションで、デフォルトでは設定されていません $CFG->session_redis_prefix = ; //オプションで、デフォルトでは設定されていません $CFG->session_redis_acquire_lock_timeout = 120; $CFG->session_redis_lock_expire = 7200; $CFG->session_redis_serializer_use_igbinary = false; //オプションで、デフォルトはPHP組み込みシリアライザです

ノート:

  • デフォルトのシリアライザを変更するときは注意してください: phpredis 拡張機能のコンパイル時に --enable-redis-igbinaryが必要であり、そしてMoodleを再び使用する前に、以前のセッションのデータを削除する必要があります。

読み取り専用セッション

Moodle 3.9には実験的な機能があり、特定のページが読み取り専用セッションを開始できるようにします。これにより、大規模なパフォーマンスを目的とした書き込みロックは必要ありません。

https://tracker.moodle.org/browse/MDL-58018

設定 Configuration

1) 準拠セッションストアを使用する

読み取り専用セッションを使用する場合、あなたはデータベースおよびRedisを含む読み取り専用をサポートするセッションストアを使用する必要があります。

2) セッションキャッシュをマッピングする

デフォルトではMUC「セッションキャッシュ」はすべて$SESSIONに保存されますが、これは誤解されやすい微妙な違いでもあります。MUCキャッシュはいつでも読み書きできるため、$SESSIONがロックされているかどうかとは無関係です。そのため、セッションモードを持つキャッシュ定義はすべてRedis等のセッション内に存在しないストアにマッピングする必要があります。これが実施されない場合、設定の問題を強調するエラーメッセージが発生します。

3) config.phpで有効にする

$CFG->enable_read_only_sessions = true;

もし、あなたがこれを展開することに不安があるのであればソフト展開モードがあります。このソフト展開モードでは問題があれば報告されます。そして、あなたはこれを1~2ヶ月放置した後、完全にオンにすることもできます:

$CFG->enable_read_only_sessions_debug = true;

4) コアおよびプラグインのサポートを追加する Adding support for it to core and plugins

Various critical pages and web services in core have been declared and implemented as readonly, if you want to support readonly sessions please read: コアの様々な重要なページやウェブサービスは読み取り専用として宣言および実装されています。あなたが読み取り専用セッションをサポートしたい場合、こちらをお読みください: https://docs.moodle.org/dev/Session_locks

関連情報