ホームページ > バックエンド開発 > PHPチュートリアル > PHPセッションは少し混乱します

PHPセッションは少し混乱します

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 13:00:34
オリジナル
1244 人が閲覧しました

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 がインストールされていない場合は、セッションをデータベースに書き込むこともできます。これも良い方法です。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート