filetype
fnmatch
Funções para Sistema de arquivo
PHP Manual

# flock

(PHP 4, PHP 5)

flock — Monitor de travamento de arquivos portátil

### Descrição

bool flock ( resource `$handle` , int `$operation` [, int `&$wouldblock` ] )

flock() permite você executar um simples modelo reader/writer que pode ser usado virtualmente cada plataforma (incluindo muitos derivados do Unix e até mesmo Windows).

A trava é liberada também por fclose() (que é também chamada automaticamente quando o script é finalizado).

PHP suporta uma maneira portável de travamento completo de arquivos de forma consultiva (que significa que todos programas acessados tem que usar a mesma forma de travamento ou não irá funcionar).

### Parâmetros

`handle`

  Um ponteiro de arquivo aberto.

`operation`

  `operation` é uma das seguintes:

  - `LOCK_SH` para obter trava compartilhada (reader).
  - `LOCK_EX` para obter trava exclusiva (writer).
  - `LOCK_UN` para liberar uma trava (compartilhada ou exclusiva).
  - `LOCK_NB` se você não quer flock() para bloquear quando está travando. (não suportado em Windows)
`wouldblock`

  O terceiro argumento opcional é usado como `TRUE` se a lock irá bloquear (EWOULDBLOCK errno condition).

### Valor Retornado

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

### Histórico

Versão | Descrição
--- | ---
4.0.1 | As constantes LOCK_XXX foram adicionadas. Ao invés de você precisa usar 1 para `LOCK_SH`, 2 `LOCK_EX`, 3 para `LOCK_UN` e 4 para `LOCK_NB`

### Exemplos

Exemplo #1 Exemplo da flock()

`<?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);
?>`

### Notas

> Nota: flock() trava obrigatoriamente em Windows.

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

Aviso

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

filetype
fnmatch
Funções para Sistema de arquivo
PHP Manual