I have a counter refreshed serverside with an AJAX request. I run this timer every minute.
My session timeout has to be 2 hours, therefore here is my config.php file :
$config['sess_driver'] = 'files';
$config['sess_save_path'] = '/var/lib/php5/sessions';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 60*60*2;
$config['sess_match_ip'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_time_to_update'] = 60*5;
$config['sess_regenerate_destroy'] = FALSE;
The counter updater prevent my session from expiration. How can I prevent a controller action from renewing the session timeout ?
[EDIT]
Here is a try to extend Session Class. This try looks good but I wait for tests review. feel free to read and comment ;-) :
if (
($regenerate_time = config_item('sess_time_to_update')) > 0
)
{
if ( ! isset($_SESSION['__ci_last_regenerate']))
{
$_SESSION['__ci_last_regenerate'] = time();
}
elseif ($_SESSION['__ci_last_regenerate'] < (time() - $params['expiration']))
{
$this->sess_destroy();
}
elseif ($_SESSION['__ci_last_regenerate'] < (time() - $regenerate_time))
{
if (get_instance()->uri->segment(2) != "refreshTaskCount") {
$this->sess_regenerate((bool)config_item('sess_regenerate_destroy'));
}
}
}
// Another work-around ... PHP doesn't seem to send the session cookie
// unless it is being currently created or regenerated
if (isset($_COOKIE[$this->_config['cookie_name']]) && $_COOKIE[$this->_config['cookie_name']] === session_id())
{
if (get_instance()->uri->segment(2) != "refreshTaskCount") {
setcookie(
$this->_config['cookie_name'],
session_id(),
(empty($this->_config['cookie_lifetime']) ? 0 : time() + $this->_config['cookie_lifetime']),
$this->_config['cookie_path'],
$this->_config['cookie_domain'],
$this->_config['cookie_secure'],
TRUE
);
}
}