Skip to content


Subversion checkout URL

You can clone with
Download ZIP


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

mattab opened this Issue · 10 comments

2 participants


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

I also saw a tweet complaining about these:

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


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


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);}

(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


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


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


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


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).


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


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.


(In [3552]) fixes #1910

@mattab mattab added this to the Piwik 1.1 milestone
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.