English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Tutorial Básico

PHP Avançado Tutorial

PHP & MySQL

Manual de referência PHP

Uso e exemplo da função PHP flock()

    PHP Filesystem Referência

A função flock() pode bloquear ou liberar um arquivo, retornando true em caso de sucesso e false em caso de falha.

Sintaxe

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

A função flock() nos permite executar operações simples de leitor/Modelo de escritor, que pode ser usado em quase todas as plataformas.

Comentários e dicas

Comentário: Essas travas são usadas apenas no processo PHP atual. Se permitido, outros processos podem modificar ou excluir um arquivo PHP.-Arquivo bloqueado.
Comentário: flock() é obrigatório no Windows.
Dica: fclose() pode ser usado para liberar a operação de trava, que é chamada automaticamente quando o script é executado.

Parâmetros

ParâmetrosDescrição
handle
Necessário. Especifica o arquivo aberto a ser bloqueado ou liberado.
operation
Necessário. Especifica o tipo de trava a ser usado.

Valores possíveis:

  • LOCK_SH - Trava compartilhada (programa de leitura). Permite que outros processos acessem o arquivo.

  • LOCK_EX - Trava exclusiva (programa de escrita). Impede que outros processos acessem o arquivo.

  • LOCK_UN - Liberar uma trava compartilhada ou exclusiva

  • LOCK_NB - Evitar bloqueio de outros processos em situações de bloqueio.

    Essas travas são usadas apenas no processo PHP atual, e, se permitido, outros processos podem modificar ou excluir arquivos bloqueados pelo PHP. No Windows, essa função é necessária. Podemos usar fclose() para liberar a operação de bloqueio, que pode ser chamada automaticamente quando o script é executado.

wouldblock
Opcional. Se definido como 1então, ao bloquear, outros processos ficam bloqueados.

Exemplo online

Exemplo de uso da trava exclusiva LOCK_EX do fclock:

<?php
   $file = fopen("/PhpProject/sample.txt", "w+");
   //Trava exclusiva
   if(flock($file, LOCK_EX)) {
      fwrite($file, "flock function");
      
       // Liberar trava
      flock($file, LOCK_UN);
      echo $file;
   } else {
      echo "Erro ao bloquear o arquivo!";
   }
   fclose($file);
?>

PHP Filesystem Referência