


PHP での厳密に 30 分の有効期限切れセッションの設定に関するインタビューの質問に対する 4 つの回答、4 種類のセッション_PHP チュートリアル
4 つの回答、4 種類のセッションを含む、厳密に 30 分の期限切れセッション インタビューの質問を PHP で設定します
今日私のWeiboに質問を投稿しました:
面接中によく質問します。「30 分で期限切れになるセッションを設定するにはどうすればよいですか?」これには多くの知識が含まれており、基本的なスキルを確認するのに特に適しています。誰が答えるでしょうか?
なぜこの質問をするのですか? 1. stackoverflow でこの問題について議論している人を見かけました 2. よくこの質問をするのを覚えていますので~~
ここで、この質問に答えましょう。
最初の回答
そして、最も一般的な答えは次のとおりです: セッションの有効期限を設定します。これは session.gc_maxlifetime です。この答えは次の理由により正しくありません。 1. まず、この PHP はセッションの gc、つまり session.gc_probability と session.gc_divisor を実行するために一定の確率を使用します (導入については、Session を使用する PHP で発生したアクセス許可拒否通知の解決策を参照してください) ) デフォルト値はそれぞれ 1 と 100 で、セッションの開始時に PHP がセッション gc を実行する可能性が 1% であることを意味します。セッションが 30 分で期限切れになるという保証はありません。
2. 高確率のクリーンアップ機会を設定するのはどうでしょうか? それでも不適切なのは、PHP が統計セッション ファイルの有効期限が切れているかどうかを判断するためです。 , PHP は、セッションに関連するセッション変数を保存するために " "A" ファイルを使用します。 5 分前に a=1 でセッション変数を設定し、5 分後に b=2 で Seesion 変数を設定したとします。すると、この変更時刻がセッションファイルは瞬間bの時間を追加すると、30分でaがクリアできなくなります下記の3つ目の理由もあります。
3. PHP (例として Linux) は、セッションのデフォルトの保存ディレクトリとして /tmp を使用し、マニュアルにも次のような記述があります。注: 異なるスクリプトの session.gc_maxlifetime 値が異なるが、セッション データを保存する場所が同じである場合、値が最も小さいスクリプトがデータをクリーンアップします。この場合、このディレクティブを session.save_path と一緒に使用します。
言い換えると、独自の独立した save_path を指定していない 2 つのアプリケーションがある場合、1 つは有効期限を 2 分に設定し (A と仮定します)、もう 1 つは有効期限を 30 分に設定します (B と仮定します)。 A のセッションごとに gc が実行されると、アプリケーション B に属するセッション ファイルも同時に削除されます。
つまり、最初の答えは「完全に厳密に」正しいわけではありません。
2番目の答えもう 1 つの一般的な答えは次のとおりです: セッション ID のキャリアと Cookie の有効期限 (session.cookie_lifetime) を設定します。この答えも次の理由で正しくありません。
この有効期限は単なる Cookie の有効期限です。つまり、セッションの有効期限はサーバーの有効期限ですが、Cookie の有効期限はクライアント (ブラウザ) によって保証されるだけです。標準ブラウザの有効期限が切れると、この Cookie (セッション ID を含む) は送信されなくなりますが、リクエストを作成する場合は、セッション ID の値を引き続き使用できます。3番目の答え
memcache、redis などを使用してください。OK、この答えは正しい答えです。ただし、次は明らかに質問者が尋ねるでしょう。PHP を使用した場合はどうなるでしょうか。 4番目の答え
もちろん、面接はあなたを試すためのものではなく、あなたの考えの徹底的さをテストするために行われます。その過程で、私はこれらの落とし穴を指摘しますので、一般的に言えば、質問の意味を満たすアプローチは次のとおりです。
1. Cookie の有効期限を 30 分に設定し、セッションの有効期間を 30 分に設定します。2. 各セッション値にタイムスタンプを自分で追加します。
3. 各訪問の前にタイムスタンプを決定します。 最後に、なぜ有効期限を 30 分に設定する必要があるのかという質問が何人かの学生からありました。第一に、これは面接用であり、第二に、30 分で有効期限が切れるクーポンなど、実際の使用シナリオでの使用ですか?
ありがとう:)
phpセッションは期限切れになりません 有効期限を設定する方法php セッションは期限切れになります (元はセッション Cookie であり、ブラウザを閉じるとセッションが期限切れになることを意味します)。期限切れを強制したい場合は、次のようにすることができます:
phpでセッションの有効期限を設定するには、phpiniではなくコードで設定する必要があります
session_cache_expire を試してみる
例 1. session_cache_expire() example
/* キャッシュ リミッターを 'private' に設定します */
session_cache_limiter('private');
$cache_limiter = session_cache_limiter() ;
/* キャッシュの有効期限を 30 分に設定します */
session_cache_expire(30);
$cache_expire = session_cache_expire();
/* セッションを開始します */
session_start();
echo "キャッシュ リミッターは現在$cache_limiter br>";
echo "キャッシュされたセッション ページは $cache_expire 分後に期限切れになります";
?>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
