セッションデータをデータベースに保存できるようにしました。ページを更新するたびに、新しいレコードが挿入され、セッションテーブルが多くの行でいっぱいになります。IPのエントリが存在しない場合にのみレコードを挿入し、既存のIPを更新するように設定するにはどうすればよいですか?
1 に答える
セッションには config.php ファイル (つまり ) で設定できるタイムアウトがあります$config['sess_expiration'] = 7200
。その時間に達すると、有効期限が切れて削除されます (セッション ガベージ コレクション メカニズムによって)。
. IPのエントリが存在しない場合にのみレコードを挿入するように設定するにはどうすればよいですか
更新ごとに新しいセッション レコードを作成するのではなく、オプションが選択されている場合は、指定された IP およびユーザー エージェントの既存のセッション レコードにデータを追加/削除するだけです (セッションが期限切れで新しいレコードが作成される場合を除く)。Codeigniter には、有効期限が切れたセッションを最終的に (即時ではないにしても) 削除する組み込みのガベージ コレクション メカニズムがあります。
既存のIPを更新しますか?
既存の IP を更新し、セッション データを上書きするのはなぜですか? それは意味がありません。現在セッションを使用しているユーザーのセッション データを上書きしてしまう可能性があります。ユーザーがシステムの使用を停止した場合、セッションは最終的に期限切れになり、削除されます。
codeigniterセッションクラスページによると:
ページが読み込まれると、セッション クラスは、有効なセッション データがユーザーのセッション Cookie に存在するかどうかを確認します。セッション データが存在しない場合 (または有効期限が切れている場合)、新しいセッションが作成され、Cookie に保存されます。セッションが存在する場合、その情報が更新され、Cookie が更新されます。更新ごとに、session_id が再生成されます。