セッション系

複数サーバで稼働していたりする場合、セッションが切れることがある。
メモリを確保しなければならないので、負荷が上がる(オーバーヘッド)。
サーバ間はmemcacheかNFS
PHPSESSIDは、初回セッション変数登録時にクッキー値としてクライアント側に、
ブラウザを閉じるまで、通常属性で作成される。

session_start();

・破棄
unset($_SESSION("visited"));
※$_SESSIONはunsetしてはいけない。

$_SESSION = array();

if (isset($_COOKIE["PHPSESSID"])) {
setcookie("PHPSESSID", '', time() - 1800, '/');
}

session_destroy();

■保存先

php.ini
session.save_path=パス(通常は/tmp)(ec2 /var/lib/php/session)
sess_PHPSESSIDファイルに内容が書き込まれる

■削除タイミング(ガベージコレクション

session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
100回に1回のアクセスで1440秒以上経過したセッションファイルが全削除される。sess_で始まるファイル限定、session_start()のタイミングで削除

cookie

cookieは今回設定しても、取得できるのは、次回の接続から。
setcookie(変数名,値,time()+秒,'/','ドメイン',1:セキュア属性);

■ブラウザキャッシュ

・キャッシュさせない
header("pragma: no-cache");
header("cache-control: no-cache");
header("expires: 0");

php.iniの設定で
session.cache_limiter = nocache
の場合に、
session_start()
を実行すると、
HTTPヘッダーに以下を吐き、ブラウザキャッシュを防ぐ
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
※キャッシュしないためサーバの負荷は上がる
※ログ後のページなどに使用(戻る防止)
※session_write_closeではやめに閉じること