予定よりも早くセッションを終了する問題に直面しました。 つまり、インストールする
ini_set('session.gc_maxlifetime', 120960);
ini_set('session.cookie_lifetime', 120960);
そして、セッションは約30分後に強制終了されます。
グーグルで長い間、慎重に。 役立つものは何もありませんでした。
私はマニュアルを読み始め、問題の原因を見つけました。 めまいの直前に判明。
サイトは共有ホスティングでホストされ、すべてのセッションは/ tmpに保存されます。 したがって、他のサイトのスクリプトは、設定されたタイムアウト(デフォルトでは30分)に従ってすべてのセッションをクリーニングします。
したがって、このような問題を回避するには、セッションの保存場所を変更する必要があります-それだけです。
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] .'../sessions/');
オプションとして、できます。 セッションファイルに外部からアクセスできないことが重要です。
情報は新しいものではないかもしれませんが、Googleで何も見つからなかったので、投稿することにしました。 突然誰かが便利になります。
UPD:
一番下の行は、すべてのセッションに開始パラメーターがあることです。 スクリプトが開始されると、phpはライフタイム設定(およびガベージコレクタが起動する確率)を読み取り、ガベージコレクタを起動します。 ガベージコレクターが、設定で指定されたよりも長く存続したセッションでつまずくと、それは削除されます。 セッションファイルは削除され、ユーザーのCookieはもちろん残ります。 したがって、セッション時間を30分に設定してスクリプトを起動し、同時に別のスクリプトがより長い時間で配置する同じフォルダー内のセッションを検索すると、すべてのセッションが削除されます。 このためには、フォルダを変更する必要があります。
セッションの公式マニュアルに書かれているものは次のとおりです。
「異なるスクリプトがsession.gc_maxlifetimeの異なる値を持っているが、セッションデータを保存するための同じ場所を共有している場合、最小値のスクリプトはデータをクリーニングします。 この場合、このディレクティブをsession.save_pathとともに使用します。