-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathclearstatcache.xml
162 lines (152 loc) · 5.35 KB
/
clearstatcache.xml
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e82ff8a846af03b863c4a57fbedc0a93af0e68db Maintainer: hirokawa Status: ready -->
<!-- CREDITS: shimooka,mumumu -->
<refentry xml:id="function.clearstatcache" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>clearstatcache</refname>
<refpurpose>ファイルのステータスのキャッシュをクリアする</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>void</type><methodname>clearstatcache</methodname>
<methodparam choice="opt"><type>bool</type><parameter>clear_realpath_cache</parameter><initializer>&false;</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>filename</parameter><initializer>""</initializer></methodparam>
</methodsynopsis>
<para>
<systemitem>stat</systemitem>や<systemitem>lstat</systemitem>、
またはその他の関数(後述)を使用すると、PHPはパフォーマンス向上のために
それらの関数の戻り値をキャッシュします。しかし、ケースによっては、
キャッシュされた情報を消去したい場合もあるでしょう。
例えば、一つのスクリプト上で同じファイルが何度もチェックされ、
そのファイルが変更されたり削除されたりする可能性がある場合、
ステータスキャッシュを消去しなければならないと感じるでしょう。
このようなケースでは、<function>clearstatcache</function>を使用することで
ファイルの情報に関してPHPが持っているキャッシュをクリアすることができます。
</para>
<para>
PHP は存在しないファイルについての情報はキャッシュしないことにも
注意してください。もし存在しないファイルに対して
<function>file_exists</function> をコールする場合、ファイルを作成するまで
この関数は &false; を返します。もしファイルを作成した場合、
たとえファイルを削除したとしても &true; を返します。
しかし、<function>unlink</function> はキャッシュを自動的にクリアします。
</para>
<note>
<para>
この関数は特定のファイルに関する情報をキャッシュします。したがって、
同じファイルについて複数回の操作を行いそのファイルに関する情報を
キャッシュされないようにするためには、
<function>clearstatcache</function>をコールするだけです。
</para>
</note>
<para>
影響を受ける関数を以下に示します。
<function>stat</function>,
<function>lstat</function>,
<function>file_exists</function>,
<function>is_writable</function>,
<function>is_readable</function>,
<function>is_executable</function>,
<function>is_file</function>,
<function>is_dir</function>,
<function>is_link</function>,
<function>filectime</function>,
<function>fileatime</function>,
<function>filemtime</function>,
<function>fileinode</function>,
<function>filegroup</function>,
<function>fileowner</function>,
<function>filesize</function>,
<function>filetype</function>, および
<function>fileperms</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>clear_realpath_cache</parameter></term>
<listitem>
<para>
realpath キャッシュ<emphasis>も</emphasis>クリアするかどうか。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>filename</parameter></term>
<listitem>
<para>
realpath キャッシュを特定のファイル名だけに対してクリアする。
<parameter>clear_realpath_cache</parameter> が &true;
の場合にのみ使用。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>clearstatcache</function> の例</title>
<programlisting role="php">
<![CDATA[
<?php
$file = 'output_log.txt';
function get_owner($file)
{
$stat = stat($file);
$user = posix_getpwuid($stat['uid']);
return $user['name'];
}
$format = "UID @ %s: %s\n";
printf($format, date('r'), get_owner($file));
chown($file, 'ross');
printf($format, date('r'), get_owner($file));
clearstatcache();
printf($format, date('r'), get_owner($file));
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
UID @ Sun, 12 Oct 2008 20:48:28 +0100: ross
]]>
</screen>
</example>
</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
-->