Descrição
bool
flock
( int fp, int operation [, int wouldblock])
O
PHP
suporta
uma
maneira
portável
de
lock
arquivos
inteiros
em
uma
advisory
way
(
que
significa
que
todos
os
programas
acessando
tem
que
usar
o
mesmo
tipo
de
travamento
ou
não
irá
funcionar
)
.
flock(
)
opera
em
fp
,
que
tem
que
ser
um
ponteiro
de
arquivo
aberto
com
sucesso
.
operacao
é
um
dos
seguintes
valores
:
-
Para
obter
um
lock
compartilhado
(
leitura)
,
utilize
operation
como
LOCK_SH
(ou
use
1
se
a
versão
do
PHP
for
anterior
a
4.0.1
)
.
-
Para
obter
um
lock
exclusivo
(
gravação)
,
utilize
operacao
como
LOCK_EX
(ou
use
2
se
a
versão
do
PHP
for
anterior
a
4.0.1
)
.
-
Para
retirar
um
lock
(
compartilhado
ou
exclusivo)
,
uyilize
operacao
como
LOCK_UN
(ou
use
3
se
a
versão
do
PHP
for
anterior
a
4.0.1
)
.
-
Se
você
não
quer
usar
flock(
)
para
bloquear
enquanto
travando
,
adicione
LOCK_NB
(4
se
a
versão
do
PHP
for
anterior
a
4.0.1
)
a
operacao
.
flock(
)
permite
a
você
fazer
um
simples
modelo
leitura
/
gravação
(reader
/
writer
)
que
pode
ser
usado
em
virtualmente
todas
as
plataformas
(incluindo
a
maior
parte
dos
Unixes
e
até
mesmo
Windows
)
.
O
terceiro
argumento
opcional
é
usado
como
TRUE
se
a
lock
irá
bloquear
(
EWOULDBLOCK
errno
condition
)
.
flock(
)
retorna
TRUE
em
caso
de
sucesso
e
FALSE
em
caso
de
erro
(por
exemplo
quando
um
lock
não
pode
ser
obtido
)
.
Nota
:
Uma
vez
que
flock(
)
requer
um
ponteiro
de
arquivo
,
você
precisa
utilizar
um
lock
de
arquivo
especial
para
proteger
i
acessi
a
um
arquivo
ao
qual
você
pretende
truncar
quando
abrindo
no
modo
de
escrita
(com
um
argumento
"w
"
ou
"w+
"
em
fopen(
)
)
.
Atenção
|
flock(
)
não
funcionará
em
NFS
ou
em
qualquer
outro
sistema
de
arquivos
em
rede
.
Verifique
a
documentação
do
seu
sistema
operacional
para
mais
detalhes
.
Na
maior
parte
dos
sistemas
operacionais
flock(
)
é
implementada
no
nível
do
processo
.
Quando
utilizando
um
servidor
com
uma
API
de
multiprocessamento
(
como
ISAPI)
,
você
não
pode
confiar
em
flock(
)
para
proteger
os
arquivos
contra
outros
scripts
PHP
rodando
em
threads
paralelas
da
mesma
instância
do
servidor
!
flock(
)
não
é
suportado
em
sistemas
de
arquivos
antiquados
como
a
FAT
e
seus
derivados
,
e
sempre
retornará
FALSE
sob
esses
ambientes
(especialmente
para
usuários
do
Windows
98
)
.
|