2017-06-28 34 views
3

私は、Zend Framework 3を使用してセッションのタイムアウトに関する問題に直面しています。セッションは5〜10分以内に終了しました。私はZf3スケルトンが提供するセッションのデフォルトコードをglobal.phpとして以下のように使用しました。ZF3セッションタイムアウトの問題

// Session configuration. 
'session_config' => [ 
    'cookie_lifetime' => 60*60*1, // Session cookie will expire in 1 hour. 
    'gc_maxlifetime' => 60*60*1, // Store session data on server maximum for 1 hour. 
], 

// Session manager configuration. 
'session_manager' => 
[ 
    'validators' => [ 
     RemoteAddr::class, 
     HttpUserAgent::class, 
    ] 
], 

// Session storage configuration. 
'session_storage' => [ 
    'type' => SessionArrayStorage::class 
], 

は、コードの上に使用した後、まだセッションは5-10 minutes.I以内に期限切れセッションがZF3でそれを設定するために、時間に30以上のminutes.Howを満了したいです。

解決策を提示してください。

答えて

0

セッションマネージャの設定が正しくありますが、これらのセッション設定をデフォルトの設定として使用するには不十分です。

このセッションマネージャをデフォルトのセッションマネージャにしないと仮定します。これを行うには、可能な限り早くインスタンス化する必要があります。 一つの解決策は、このモジュールであるModule.php

use Zend\Mvc\MvcEvent; 
use Zend\Session\SessionManager; 

class Module 
{ 
    //... 

    /** 
    * This method is called once the MVC bootstrapping is complete. 
    */ 
    public function onBootstrap(MvcEvent $event) 
    { 
     $application = $event->getApplication(); 
     $serviceManager = $application->getServiceManager(); 

     // The following line instantiates the SessionManager and automatically 
     // makes the SessionManager the 'default' one. 
     $sessionManager = $serviceManager->get(SessionManager::class); 
    } 
} 

Reference

EDIT行うには、次のようになります。私の第二の仮定は、あなたのセッションのためのグローバルパスを使用することである(例えばは/ var/libが/ PHP /セッション)。

Debianには、php.iniのセッション設定(/etc/cron.d/php)に従ってセッションをクリアするcronがあります。

このcronは、あなたのphp.ini "gc_maxlifetime"を使用し、おそらくあなたのセッションをクリアします。

セッションが保存される場所を確認するには、session_save_path()を使用してください。あなたのセッションのディレクトリを確認してください。

これを克服するために、あなたはグローバルGCの設定や独自の、削除あなたのセッションを使用して別のスクリプトを望んでいない(あなたは「save_path」を設定する必要がありますし、このパスは、サーバー上の他のアプリケーションやスクリプトと共有すべきではありません)。

あなたの 'session_config' 配列に

'save_path'   => '/path/to/app/data/sessions' 

を追加します。

+0

上記のコードを使用した後にまだセッションが5〜10分以内に終了しました。このための解決策を提供してください。 私が逃したセッションのための他の設定? – Ohm

+0

セッションを使用しているコードとセッションの有効期限の見え方を追加できますか? –

+0

上記のコードをglobal.phpで使用すると、10分以内に有効期限が切れます。モジュールファイルにコードを追加しても、セッションは10分以内に有効期限が切れます。 – Ohm

関連する問題