New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check session.gc_probability so tmp/sessions files don't grow out of control #1910

Closed
mattab opened this Issue Dec 21, 2010 · 10 comments

Comments

Projects
None yet
2 participants
@mattab
Copy link
Member

mattab commented Dec 21, 2010

On the demo server, there are thousands of session files in tmp/sessions.

I also saw a tweet complaining about these: http://translate.googleusercontent.com/translate_c?hl=en&sl=auto&tl=en&u=http://twitter.com/gerritvanaaken/statuses/16796496468905984&rurl=translate.google.com&twu=1&usg=ALkJrhgTQd9DhFc-ekLd1yoPAtBVLTADDw

What is the solution to this problem, could we purge on a regular basis the out of date session files?

@robocoder

This comment has been minimized.

Copy link
Contributor

robocoder commented Dec 21, 2010

Marking as dupe of #1279. When we move sessions to db, we'll have to implement our own session file cleanup.

Previously commented on in #1279

@mattab

This comment has been minimized.

Copy link
Member Author

mattab commented Dec 22, 2010

I think we can run a manual cleanup function as a Piwik Scheduled task

Something like

$current_time = time();
$path = '/path/to/sessions/';

$handle = opendir($path);
while (($filename = readdir($handle)) !== false)
{
if ($filename != '.' && $filename != '..')
{
$filemtime = filemtime($path . $filename);
if ($current_time - $filemtime > 3600) {unlink($path . $filename);}
}
}
@robocoder

This comment has been minimized.

Copy link
Contributor

robocoder commented Dec 22, 2010

(In [3514]) refs #1279, refs #1910 - language preference for anonymous users is now stored in a cookie; we can't use this workaround for the dashboard layout because of cookie size limits

@robocoder

This comment has been minimized.

Copy link
Contributor

robocoder commented Dec 22, 2010

(In [3515]) refs #1279, refs #1910 - fix typo

@robocoder

This comment has been minimized.

Copy link
Contributor

robocoder commented Dec 29, 2010

(In [3548]) refs #1910 - set expiry on anonymous user dashboard layouts

@robocoder

This comment has been minimized.

Copy link
Contributor

robocoder commented Dec 29, 2010

matt: on demo.piwik.org, session.gc_probability = 0 ... which means garbage collection never runs. AFAIK this is a web server configuration error.

@robocoder

This comment has been minimized.

Copy link
Contributor

robocoder commented Dec 30, 2010

looking at gerritvanaaken's tweet, the ftp user ID can't access the tmp files created under the web server user ID (which is an expected permission issue).

@mattab

This comment has been minimized.

Copy link
Member Author

mattab commented Jan 1, 2011

I wonder if it would

  • work at all to call ini_set( session.gc_probability ) and set it to non zero value
  • when we detect that this is zero
  • and if this is desired to interact with server configuration
  • and if PHP will apply the garbage collection to the current customized session path (ie tmp/sessions)

Requires experimentation

@robocoder

This comment has been minimized.

Copy link
Contributor

robocoder commented Jan 1, 2011

Judging from the comments in php.ini, I think the behaviour on the demo was Debian-specific. In a standard PHP build, if session.gc_probability is undefined, it defaults to 1.

Looking at the PHP source, garbage collection is triggered at the end of session_start().

So, I'll set session.gc_probability to 1 if zero, and we're using a local session folder.

@robocoder

This comment has been minimized.

Copy link
Contributor

robocoder commented Jan 1, 2011

(In [3552]) fixes #1910

@mattab mattab added this to the Piwik 1.1 milestone Jul 8, 2014

@mattab mattab added T: Bug labels Jul 8, 2014

This issue was closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment