Manual do PHP
Anterior |  | Próxima

# flock

(PHP 3>= 3.0.7, PHP 4 , PHP 5)

flock -- Monitor de travamento de arquivos portátil

## Descrição

bool flock ( int handle, 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).

Retorna `TRUE` em caso de sucesso ou `FALSE` em falhas.

Exemplo 1. flock() example

`<?php $fp = fopen("/tmp/lock.txt", "w+"); if (flock($fp, LOCK_EX)) { // faca um lock exclusivo fwrite($fp, "escrevemos algo aqui\n"); flock($fp, LOCK_UN); // libera o lock } else { echo "Não pude travar o arquivo !"; } fclose($fp); ?>`

> 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).

Anterior | Principal | Próxima
filetype | Acima | fnmatch