セッションハンドリング

提供:MoodleDocs
2024年4月7日 (日) 15:05時点におけるMitsuhiro Yoshida (トーク | 投稿記録)による版
移動先:案内検索


追加作成中です - Mitsuhiro Yoshida (トーク)

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

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) 準拠セッションストアを使用する Using a compliant session store

In order to use readonly sessions you need to be using a session store which supports it, which includes database and redis.

2) Mapping session caches

By default all MUC 'session caches' are stored in the $SESSION which is a subtle distinction that is easily misunderstood. MUC caches can be read and written at any time and are independent of the $SESSION being locked. So all cache definitions which have a mode of session need to be mapped to a store which is not in the session such as in redis. If this isn't done errors will be raised highlighting the configuration issue.

3) config.phpで有効にする Turning it on in config.php

$CFG->enable_read_only_sessions = true;

If you have concerns about rolling this out, there is a soft rollout mode which report on any issues and you could leave this on for say a month or two and then turn it on fully:

$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

こちらもご覧ください