0

CodeIgniter 2.1 を使用しています

CodeIgniter のセッションを使用して、ユーザーがログインしているかどうかを処理します。そして、それはうまく機能します。セッションをデータベースに保存しています。ここに私のセッション変数のいくつかがあります:

$config['sess_expiration'] = 3600;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'user_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 15;

sess_time_to_updateユーザーがページを閉じたか、ページから移動したかを監視する方法が必要だったため、このような低い増分を使用しています。CodeIgniter は更新last_activityごとに列を更新するため (15 秒) - アイドル状態を確認するために、以下のようなクエリを作成します(言語/構文が正しくないことはわかっています)

if last_activity < (current_time - 25s)それから、ユーザーがおそらくページを離れたことがわかります。

コンセプトはうまく機能しますが、セッションテーブルを頻繁に更新することに目に見えない問題があるのではないかと思っています??

ありがとう!

4

2 に答える 2

1

if last_activity < (current_time - 25s)過去 25 秒間にリクエストが行われなかったことを意味するだけであり、必ずしもユーザーが去ったことを意味するわけではありません。

ユーザーが 15 秒ごとにリクエストを行わない限り、最後のアクティビティは実際には 15 秒ごとに更新されません。たとえば、ページを開いて 5 分間読んだ場合、最後のアクティビティは次のリクエストまで更新されません。

セッションテーブルを頻繁に更新することに目に見えない問題があるかどうか疑問に思っています

セッション テーブルの更新と Cookie の更新のわずかなオーバーヘッドです。15 秒は非常に短い時間枠ですが、それが本当に必要な場合は問題ありません。

于 2012-06-16T11:24:07.010 に答える
0

セッションを 5 分ごとに更新したくない場合は、次の変更を行います。

session.phpファイルに移動し、System/libraries/Session.php以下のようなすべてのパラメーターを空白に設定します。それは私のために働いています。

public $sess_encrypt_cookie;
public $sess_use_database;
于 2015-02-18T05:14:57.020 に答える