Skip to content

Commit d23f9b3

Browse files
committed
Improve session_gc documentation
php/doc-en@372350f
1 parent a26fa3d commit d23f9b3

File tree

1 file changed

+63
-48
lines changed

1 file changed

+63
-48
lines changed

reference/session/functions/session-gc.xml

Lines changed: 63 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: be8baf89c0016c1c39ab0b85cafca28c8364e95b Maintainer: satoruyoshida Status: ready -->
3+
<!-- EN-Revision: 372350f3bfad45ba01db850a1a3be40c803e196b Maintainer: satoruyoshida Status: ready -->
44
<!-- Credits: mumumu -->
55
<refentry xml:id="function.session-gc" xmlns="http://docbook.org/ns/docbook">
66
<refnamediv>
@@ -13,22 +13,40 @@
1313
<type class="union"><type>int</type><type>false</type></type><methodname>session_gc</methodname>
1414
<void/>
1515
</methodsynopsis>
16-
<para>
17-
<function>session_gc</function> は、セッションデータの GC (ガベージコレクション)
18-
を実行するために使用されます。PHPは、デフォルトで確率ベースのセッション GC を行います。
19-
</para>
20-
<para>
21-
確率ベースの GC は多少は機能しますが、いくつかの問題があります。
22-
1) トラフィックが少ないサイトのセッションデータは、優先期間内に削除されないことがあります。
23-
2) トラフィックの多いサイトでは、GC が頻繁になる可能性があります。
24-
3) ユーザーの要求の際に GC が実行され、ユーザーは GC 遅延を感じます。
25-
</para>
26-
<para>
27-
そのため、例えば UNIX 系のシステムでは「cron」を使用して、
28-
本稼動システムに対して定期的に GC を実行することをお勧めします。
29-
<link linkend="ini.session.gc-probability">session.gc_probability</link> を 0 に設定して、
30-
確率ベースのGCを無効にしてください。
31-
</para>
16+
<simpara>
17+
デフォルトで PHP は、
18+
<link linkend="ini.session.gc-probability">session.gc_probability</link>
19+
の設定をを使用して、
20+
各リクエストごとに確率的にセッションガベージコレクタを実行します。
21+
この方法には以下に示すいくつかの制限があります:
22+
</simpara>
23+
<simplelist>
24+
<member>トラフィックが少ないサイトのセッションデータは、望んだ期間内に削除されないことがあります</member>
25+
<member>トラフィックの多いサイトでは、GC が頻繁に行われる可能性があり、余計な処理が行われる可能性があります</member>
26+
<member>ガベージコレクションはユーザーのリクエストに基づいて行われるため、ユーザーが遅延を感じる可能性があります</member>
27+
</simplelist>
28+
<simpara>
29+
本番環境のシステムでは、
30+
確率ベースのガベージコレクションを
31+
<link linkend="ini.session.gc-probability">session.gc_probability</link>
32+
の値を <literal>0</literal> にすることで無効にし、
33+
定期的にガベージコレクタを明示的に実行させることをおすすめします。
34+
たとえば UNIX 系のシステムでは <function>session_gc</function>
35+
をコールするスクリプトを "cron" を実行する方法が挙げられます。
36+
</simpara>
37+
38+
<note>
39+
<simpara>
40+
コマンドライン経由で実行する PHP スクリプトから
41+
<function>session_gc</function> を呼び出す場合、
42+
<link linkend="ini.session.save-path">session.save_path</link> については、
43+
Web からのリクエスト時のものと同じ値を設定し、
44+
PHP スクリプトはセッションファイルに対するアクセス権と削除権限が必須です。
45+
権限については、スクリプトを実行されるユーザー、
46+
および systemd の <literal>PrivateTmp=</literal> オプションなどの
47+
コンテナやサンドボックス機能の影響を受ける可能性があります。
48+
</simpara>
49+
</note>
3250
</refsect1>
3351

3452
<refsect1 role="parameters">
@@ -38,42 +56,44 @@
3856

3957
<refsect1 role="returnvalues">
4058
&reftitle.returnvalues;
41-
<para>
59+
<simpara>
4260
<function>session_gc</function> は、
43-
成功時には削除されたセッションデータの数、
44-
失敗時には &false; を返します。
45-
</para>
46-
<para>
47-
古いセーブハンドラは、削除されたセッションデータの数を返さず、成功/失敗フラグのみを返します。
48-
この場合、実際に削除されたデータにかかわらず、削除されたセッションデータの数は 1 になります。
49-
</para>
61+
成功時には削除されたセッションデータの数を返します。
62+
&return.falseforfailure;
63+
</simpara>
64+
<note>
65+
<simpara>
66+
古いセーブハンドラは、
67+
削除されたセッションデータの数を返さず、成功/失敗フラグのみを返します。
68+
この場合、実際に削除されたデータにかかわらず、
69+
削除されたセッションデータの数は <literal>1</literal> になります。
70+
</simpara>
71+
</note>
5072
</refsect1>
5173

5274
<refsect1 role="examples">
5375
&reftitle.examples;
54-
<para>
55-
<example>
56-
<title>cron のようなタスクマネージャでの <function>session_gc</function> の例</title>
57-
<programlisting role="php">
76+
<example>
77+
<title>cron のようなタスクマネージャでの <function>session_gc</function> の例</title>
78+
<programlisting role="php">
5879
<![CDATA[
5980
<?php
6081
// 注 : このスクリプトは、Web サーバープロセスと同じユーザーで実行される必要があります。
61-
6282
// セッションデータストレージアクセスを初期化するには、アクティブセッションが必要です。
6383
session_start();
6484
6585
// 直ちに GC を実行します
6686
session_gc();
6787
68-
// session_gc() によって作成されたセッション ID をクリーンアップします
88+
// session_start() によって作成されたセッション ID をクリーンアップします
6989
session_destroy();
7090
?>
7191
]]>
72-
</programlisting>
73-
</example>
74-
<example>
75-
<title>ユーザーがアクセス可能なスクリプトでの <function>session_gc</function> の例</title>
76-
<programlisting role="php">
92+
</programlisting>
93+
</example>
94+
<example>
95+
<title>ユーザーがアクセス可能なスクリプトでの <function>session_gc</function> の例</title>
96+
<programlisting role="php">
7797
<![CDATA[
7898
<?php
7999
// 注 : session_gc() は、タスクマネージャスクリプトで使用することをお勧めしますが、次のように使用できます。
@@ -95,24 +115,19 @@ if (file_exists($gc_time)) {
95115
}
96116
?>
97117
]]>
98-
</programlisting>
99-
</example>
100-
</para>
118+
</programlisting>
119+
</example>
101120
</refsect1>
102121

103122
<refsect1 role="seealso">
104123
&reftitle.seealso;
105-
<para>
106-
<simplelist>
107-
<member><function>session_start</function></member>
108-
<member><function>session_destroy</function></member>
109-
<member><link linkend="ini.session.gc-probability">session.gc_probability</link></member>
110-
</simplelist>
111-
</para>
124+
<simplelist>
125+
<member><function>session_start</function></member>
126+
<member><function>session_destroy</function></member>
127+
<member><link linkend="ini.session.gc-probability">session.gc_probability</link></member>
128+
</simplelist>
112129
</refsect1>
113130
</refentry>
114-
115-
116131
<!-- Keep this comment at the end of the file
117132
Local variables:
118133
mode: sgml

0 commit comments

Comments
 (0)