-
Notifications
You must be signed in to change notification settings - Fork 7
/
flock.xml
151 lines (146 loc) · 5.17 KB
/
flock.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
<?xml version="1.0" encoding="UTF-8"?>
<!-- splitted from ./it/functions/filesystem.xml, last change in rev 1.15 -->
<!-- last change to 'flock' in en/ tree in rev 1.2 -->
<!-- EN-Revision: n/a Maintainer: fernando Status: working -->
<!-- CREDITS: cortesi -->
<!-- OLD-Revision: 1.134/EN.1.2 -->
<refentry xml:id="function.flock" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>flock</refname>
<refpurpose>Sistema di bloccaggio file</refpurpose>
</refnamediv>
<refsect1>
<title>Descrizione</title>
<methodsynopsis>
<type>bool</type><methodname>flock</methodname>
<methodparam><type>resource</type><parameter>handle</parameter></methodparam>
<methodparam><type>int</type><parameter>operation</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter role="reference">wouldblock</parameter></methodparam>
</methodsynopsis>
<simpara>
Il PHP supporta un tecnologia portabile per bloccare file completi in modalità
advisory (tutti i programmi che vi accedono, devono usare lo stesso tipo di
bloccaggio o non funzionerà).
</simpara>
<note>
<para>
<function>flock</function>è obbligatorio sotto Windows.
</para>
</note>
<simpara>
<function>flock</function> opera su <parameter>handle</parameter>
che deve essere un puntatore ad un file aperto.
<parameter>operation</parameter> può assumere uno dei valori
seguenti:
</simpara>
<para>
<itemizedlist>
<listitem>
<simpara>
Per acquisire una chiave condivisa (in lettura), imposta
<parameter>operation</parameter> a <constant>LOCK_SH</constant> (usa 1 prima di
PHP 4.0.1).
</simpara>
</listitem>
<listitem>
<simpara>
Per acquisire una chiave esclusiva (in scrittura), imposta
<parameter>operation</parameter> a <constant>LOCK_EX</constant> (usa 2 prima di
PHP 4.0.1).
</simpara>
</listitem>
<listitem>
<simpara>
Per rilasciare una chiave (condivisa o esclusiva), imposta
<parameter>operation</parameter> a <constant>LOCK_UN</constant> (usa 3 prima
PHP 4.0.1).
</simpara>
</listitem>
<listitem>
<simpara>
Se non vuoi che <function>flock</function> blocchi mentre,
imposta come <constant>LOCK_NB</constant> (4 prima di PHP 4.0.1)
<parameter>operation</parameter>.
</simpara>
</listitem>
</itemizedlist>
</para>
<simpara>
<function>flock</function> ti permette di utilizzare un semplice modello di
lettura/scrittura che in teoria può essere usato su qualsiasi piattaforma
(inclusi molti sistemi Unix e anche Windows). Il terzo argomento (opzionale)
può essere impostato a &true; se la chiave puo bloccare (EWOULDBLOCK
errno condition). Il blocco è realizzato anche da <function>fclose</function>
(che è anche richiamata automaticamente quando lo script termina).
</simpara>
<simpara>
&return.success;
</simpara>
<para>
<example>
<title>Esempio di uso di <function>flock</function></title>
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // Esegue un lock esclusivo
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // rilascia il lock
} else {
echo "Non si riesce ad eseguire il lock del file !";
}
fclose($fp);
?>
]]>
</programlisting>
</example>
</para>
<note>
<para>
Poiché <function>flock</function> richiede il puntatore ad un file, può occorre
utilizzare un speciale file di lock per proteggere l'accesso a eventuali file che si desidera
azzerare attraverso l'apertura in modalità di scrittura (usando "w" o "w+" come argomento
di <function>fopen</function>).
</para>
</note>
<warning>
<para>
La funzione <function>flock</function> non funzione con NFS e con diversi altri file system
di rete. Verificare sulla documentazione del proprio sistema operativo.
</para>
<para>
Su molti sistemi operativi <function>flock</function> è implementato a livello
di processo. Usando un server API multithread quale
ISAPI non potrai basarti su <function>flock</function> per proteggere
i file da altri script PHP che girino in thread paralleli della stessa istanza
del server!
</para>
<para>
La funzione <function>flock</function> non è supportata su file system antiquati tipo
<literal>FAT</literal> e i suoi derivati e pertanto in tali ambienti restituirà sempre
&false; (questo è vero soprattutto per gli utenti di
Windows 98).
</para>
</warning>
</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
-->