File: session-gc.xml

package info (click to toggle)
php-doc 20241205~git.dfcbb86%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 70,956 kB
  • sloc: xml: 968,269; php: 23,883; javascript: 671; sh: 177; makefile: 37
file content (135 lines) | stat: -rw-r--r-- 3,787 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.session-gc" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>session_gc</refname>
  <refpurpose>Perform session data garbage collection</refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type class="union"><type>int</type><type>false</type></type><methodname>session_gc</methodname>
   <void/>
  </methodsynopsis>
  <para>
   <function>session_gc</function> is used to perform session data
   GC (garbage collection). PHP does probability based session GC by
   default.
  </para>
  <para>
   Probability based GC works somewhat but it has few problems. 1) Low
   traffic sites' session data may not be deleted within the preferred
   duration. 2) High traffic sites' GC may be too frequent GC. 3) GC is
   performed on the user's request and the user will experience a GC
   delay.
  </para>
  <para>
   Therefore, it is recommended to execute GC periodically for
   production systems using, e.g., "cron" for UNIX-like systems.
   Make sure to disable probability based GC by setting 
   <link linkend="ini.session.gc-probability">session.gc_probability</link> 
   to 0.
  </para>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  &no.function.parameters;
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   <function>session_gc</function> returns number of deleted session
   data for success, &false; for failure.
  </para>
  <para>
   Old save handlers do not return number of deleted session data, but 
   only success/failure flag. If this is the case, number of deleted
   session data became 1 regardless of actually deleted data.
  </para>
 </refsect1>

 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title><function>session_gc</function> example for task managers like cron</title>
    <programlisting role="php">
<![CDATA[
<?php
// Note: This script should be executed by the same user of web server process.

// Need active session to initialize session data storage access.
session_start();

// Executes GC immediately
session_gc();

// Clean up session ID created by session_gc()
session_destroy();
?>
]]>
    </programlisting>
   </example>
   <example>
    <title><function>session_gc</function> example for user accessible script</title>
    <programlisting role="php">
<![CDATA[
<?php
// Note: session_gc() is recommended to be used by task manager script, but
// it may be used as follows.

// Used for last GC time check
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;

session_start();
// Execute GC only when GC period elapsed. 
// i.e. Calling session_gc() every request is waste of resources. 
if (file_exists($gc_time)) {
    if (filemtime($gc_time) < time() - $gc_period) {
        session_gc();
        touch($gc_time);
    }
} else {
    touch($gc_time);
}
?>
]]>
    </programlisting>
   </example>
  </para>
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>session_start</function></member>
    <member><function>session_destroy</function></member>
    <member><link linkend="ini.session.gc-probability">session.gc_probability</link></member>
   </simplelist>
  </para>
 </refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->