php セッションは少し混乱しています
この期間中は多くのセッションが見られます
理解できたような気がすることもあれば、混乱することもあります....
私の考えは次のとおりです
私が誤解していると思うことを理解してください。ありがとうございます!!!!
1. session_start() がオンになった後、クライアントにリクエストが届くたびに、tmp ファイル (Linux を想定) の下にある対応するファイルが検索され、一致するものがあれば、そのファイルが表示されます
。
2. クライアントの Cookie に PHPSESSID (session.name が PHPSESSID であると仮定) が含まれており、値が do07jvm10rtbah6eja5m5q59a1 の場合、対応する sess_do07jvm10rtbah6eja5m5q59a1
3. セッションの有効期限は php.ini の session.gc_maxlifetime によって設定されます。デフォルトは 1440、
です。
10 に変更すると、10 秒が経過するとセッションが期限切れになります (この間、このセッション ファイルに対する操作はありません)
その結果、GC の確率の問題により、セッションは再利用されましたが、クライアントのリクエストが来たとき、ファイルはまだ存在しています。これは本当ですか?
4.session.gc_probability = 1、session.gc_divisor = 100
つまり、GC が開始される可能性は 1% あります。GC の作業は、すべてのセッション情報をスキャンし、現在の時刻からセッションの最終変更時刻 (変更日) を減算し、それをセッションと比較することです。 .gc_maxlifetime パラメーター。生存時間が gc_maxlifetime を超えた場合、セッションは削除されます (つまり、物理的に削除されます)
5. 他の人の Web サイトを見てみると、PHPSESSID がありませんでした。session.name を変更したからでしょうか?
ああ、100点、たくさん質問してもいいです
本当に莫大な利益です...
-----解決策---------------------------- ---やあ。 。私からも質問させてください。 。
PHP セッションが失われます。これに遭遇したことがありますか?
ページ上でセッションを設定し、設定したセッションを印刷することもできます。
しかし、別のページに飛ぶと消えてしまいます
例:
《1.php》
session_start();
$_SESSION['aaa']="afdsfd";
var_dump($_SESSION);
?>
《2.php》
session_start();
var_dump($_SESSION);
?>
1.phpでは出力できるのですが、2.phpにジャンプしても何もありません
-----解決策---------
1.session_start() を開いた後、リクエストがクライアントに届くたびに、tmp ファイル (Linux であると想定) 内の対応するファイルが検索され、一致するファイルがあればそのファイルが表示されます 。
2. クライアントの Cookie に PHPSESSID (session.name が PHPSESSID であると仮定) が含まれており、値が do07jvm10rtbah6eja5m5q59a1 の場合、対応する sess_do07jvm10rtbah6eja5m5q59a1
session_start() の場合、クライアントの Cookie に PHPSESSID がある場合、tmp フォルダー (Linux であると想定) で対応するファイルが検索され、一致するファイルがあれば、そのファイルがロードされます。 $_SESSION
3. セッションの有効期限は php.ini の session.gc_maxlifetime で設定されます。デフォルトは 1440、 です。
10 に変更すると、10 秒が経過するとセッションが期限切れになります (この期間中、このセッション ファイルに対する操作はありません)
その結果、GC の確率の問題により、セッションが再利用されました。クライアントのリクエストが来たとき、ファイルはまだ存在しています。これは本当ですか?
はい、ただし PHPSESSID は Cookie 経由で渡され、有効期間は 0 です
4.session.gc_probability = 1、session.gc_divisor = 100
つまり、GC が開始される可能性は 1% あります。GC の作業は、すべてのセッション情報をスキャンし、現在の時刻からセッションの最終変更時刻 (変更日) を減算し、それをセッションと比較することです。 .gc_maxlifetime パラメーター。生存時間が gc_maxlifetime を超えた場合、セッションは削除されます (つまり、物理的に削除されます)。
正しい文は次のとおりです: gc プロセスが来ると、修飾された sess_* ファイルの 1% が削除されます
5. 他の人の Web サイトを見てみると、PHPSESSID がありませんでした。session.name を変更したからでしょうか?
おそらくそうであるか、Web サイトが PHP ではない可能性があります
-----解決策------
PHP セッションの最初の方法では、頻繁に読み取りと書き込みを行うと、I/O プレッシャーが発生します。
私のアプローチは、セッションを memcache
に書き込むことです。
この方法の方が優れており、読み取りと書き込みの速度が非常に速く、ドメインを越えてアクセスすることもできます
私はこれまでこのアプローチを使用してきました。
memcache がインストールされていない場合は、セッションをデータベースに書き込むこともできます。これも良い方法です。