flock
Description
The flock of Filesystem for PHP portable advisory file locking.
Syntax
flock(
resource $stream,
int $operation,
int &$would_block = null
): boolParameters
stream
A file system pointer resource that is typically created using fopen().
operation
| Constant | Description |
|---|---|
| LOCK_SH | acquire a shared lock (reader) |
| LOCK_EX | acquire an exclusive lock (writer) |
| LOCK_UN | release a lock (shared or exclusive) |
| LOCK_NB | add as a bitmask to one of the above operations if flock() should not block during locking |
would_block
The optional third argument is set to 1 if the lock would block (EWOULDBLOCK errno condition).
Return
Returns true on success or false on failure.
Examples
1 · stream operation · LOCK_SH
<?
$filename = $_SERVER['DOCUMENT_ROOT'] . '/assets/txt/1.txt';
$mode = 'r';
$stream = fopen($filename, $mode);
$operation = LOCK_SH;
$return = flock($stream, $operation);
if($return)
{
$length = filesize($filename);
$contents = fread($stream, $length);
flock($stream, LOCK_UN);
echo $contents;
}
else
{
echo "could not lock";
}
fclose($stream);
hello
2 · stream operation · LOCK_EX
<?
$filename = $_SERVER['DOCUMENT_ROOT'] . '/assets/txt/1.txt';
$mode = 'w';
$stream = fopen($filename, $mode);
$operation = LOCK_EX;
$return = flock($stream, $operation);
if($return)
{
$contents = "hello";
fwrite($stream, $contents);
flock($stream, LOCK_UN);
echo $contents;
}
else
{
echo "could not lock";
}
fclose($stream);
hello
3 · stream operation · LOCK_NB
<?
$filename = $_SERVER['DOCUMENT_ROOT'] . '/assets/txt/1.txt';
$mode = 'w';
$stream = fopen($filename, $mode);
$operation = LOCK_EX | LOCK_NB;
$return = flock($stream, $operation);
if($return)
{
$contents = "hello";
fwrite($stream, $contents);
flock($stream, LOCK_UN);
echo $contents;
}
else
{
echo "could not lock";
}
fclose($stream);
hello
4 · would_block
<?
$filename = $_SERVER['DOCUMENT_ROOT'] . '/assets/txt/1.txt';
$mode = 'w';
$stream = fopen($filename, $mode);
$operation = LOCK_EX;
$would_block = 1;
$return = flock($stream, $operation, $would_block);
if($return)
{
$contents = "hello";
fwrite($stream, $contents);
flock($stream, LOCK_UN);
echo $contents;
}
else
{
echo "could not lock";
}
fclose($stream);
hello
Links
Filesystem
- basename
- chgrp
- chmod
- chown
- clearstatcache
- copy
- dirname
- disk_free_space
- disk_total_space
- diskfreespace
- fclose
- feof
- fflush
- fgetc
- fgetcsv
- fgets
- file
- file_exists
- file_get_contents
- file_put_contents
- fileatime
- filectime
- filegroup
- fileinode
- filemtime
- fileowner
- fileperms
- filesize
- filetype
- fnmatch
- fopen
- fpassthru
- fputcsv
- fputs
- fread
- fscanf
- fseek
- fstat
- ftell
- ftruncate
- fwrite
- glob
- is_dir
- is_executable
- is_file
- is_link
- is_readable
- is_uploaded_file
- is_writable
- is_writeable
- lchgrp
- lchown
- link
- linkinfo
- lstat
- mkdir
- move_uploaded_file
- pathinfo
- pclose
- popen
- readfile
- readlink
- realpath
- realpath_cache_get
- realpath_cache_size
- rename
- rewind
- rmdir
- set_file_buffer
- stat
- symlink
- tempnam
- tmpfile
- touch
- umask
- unlink