The manual probably doesn't stress this enough:
** This has nothing to do with lifetime of a session **
Whatever you set this setting to, it won't change how long sessions live on your server.
This only changes HTTP cache expiration time (Expires: and Cache-Control: max-age headers), which advise browser for how long it can keep pages cached in user's cache without having to reload them from the server.
session_cache_expire
(PHP 4 >= 4.2.0, PHP 5)
session_cache_expire — 現在のキャッシュの有効期限を返す
説明
int session_cache_expire
([ string
$new_cache_expire
] )session_cache_expire() は現在の session.cache_expire の設定を返します。
リクエストがあった時点で、キャッシュの有効期限は session.cache_expire で設定されたデフォルト値にリセットされます。 そのため、すべてのリクエストにおいて (そして session_start() をコールする前に) session_cache_expire() をコールする必要があります。
パラメータ
-
new_cache_expire -
new_cache_expireが指定された場合、 現在のキャッシュの有効期限は、new_cache_expireで置換されます。注意: session.cache_limiterが nocache以外の値にセットされている場合にのみ
new_cache_expireが有効となります。
返り値
session.cache_expire の現在の設定を返します。 返り値は分単位で、デフォルトは 180 です。
例
例1 session_cache_expire() の例
<?php
/* set the cache limiter to 'private' */
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
/* set the cache expire to 30 minutes */
session_cache_expire(30);
$cache_expire = session_cache_expire();
/* start the session */
session_start();
echo "The cache limiter is now set to $cache_limiter<br />";
echo "The cached session pages expire after $cache_expire minutes";
?>
Anonymous ¶
5 years ago
lance_rushing at hotmail dot com ¶
7 years ago
I've encountered the same problem of loosing focus when using IE and a javascript window.location.refresh/replace().
After fusing around I found that a <meta http-equiv="refresh" content="600"> works without move the focus on the parent frame's form. The down side is loading up the browser history and an annoying 'click' in IE on the page load.
karel at narfum dot org ¶
2 years ago
What most people also don't know, is that most Linux distributions (Debian and Ubuntu for me atleast) have a cronbjob that cleans up your session dir using the value set in the global /etc/php5/php.ini (which defaults to 24mins). So even if you set a value larger in your scripts, the cronbjob will still cleanup sessions using the global value.
If you run into that situation, you can set the global value higher in /etc/php5/php.ini, disable the cronjob or even better, do your own session cleanup in a non-systemwide directory or a database.
