デフォルトのメカニズムでは、ディスク ファイルを使用して PHP セッションを実装します。 php.ini 設定: session.save_handler = files
1, session_start()
A, session_start() はセッションメカニズムの始まりであり、セッションはファイル、
PHP 自体 ガベージ コレクションは無効です。SESSION リサイクルにはファイルの削除が必要です。この確率は php.ini の設定に基づいて決定されます。ただし、一部のシステムでは session.gc_probability =0 が設定されており、確率は 0 です。ガベージ コレクションは cron スクリプトを通じて実装されます。
session.gc_probability =1 session.gc_divisor =1000 session.gc_maxlifetime =1440//过期时间 默认24分钟 //概率是 session.gc_probability/session.gc_divisor 结果 1/1000, //不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。 session.save_path =//好像不同的系统默认不一样,有一种设置是 “N;/path” //这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本
B. セッションは、現在 $_COOKIE[session_name()] があるかどうかを判断します。session_id を保存する COOKIE キーの値を返します。
この値は、php.ini から見つけることができます。存在しない場合は、session_id が生成され、生成された session_id が COOKIE の値としてクライアントに渡されます。このステップは、次の COOKIE 操作を実行することと同等であり、COOKIE を実行します。
これの前に出力はありません。PHP には別の関数 session_regenerate_id() があり、この関数を使用すると、この前に出力はありません。
session.name = PHPSESSID //默认值PHPSESSID
D. 存在する場合は、session_id =$_COOKIE[session_name];
次に、session.save_path で指定されたフォルダーに移動して、「SESS_」.session_id() という名前のファイルを見つけます。
その内容を読み取ります。ファイルをシリアル化して反映し、$_SESSION
2に値を代入します。たとえば、新しい値$_SESSION['test'] ='blah';を追加すると、この$_SESSIONのみが維持されます。最後に、$_SESSION の値を session_id で指定されたフォルダーに書き込み、関連するリソースを閉じます。この段階で、session_id を変更する操作を実行することができます。たとえば、Drupal の匿名ユーザーは、ログイン時に SESSION を使用する必要があります。新しい session_id
setcookie(session_name(), session_id(), session.cookie_lifetime,//默认0 session.cookie_path,//默认’/’当前程序跟目录下都有效 session.cookie_domain,//默认为空 )
以上がPHPのSESSION機構の解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。