Руководство по PHP
Пред. |  | След.

# flock

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

flock -- Портируемое рекомендательное запирание файлов

## Описание

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

PHP поддерживает портируемый механизм запирания файлов целиком, который имеет рекомендательный характер (это означает, что все обращающиеся к файлу программы должны использовать такой же способ запирания файла, иначе запирание не сработает).

> Замечание: flock() является обязательным под Windows.

flock() применяется к `handle`, который должен быть указателем на открытый файл. Параметр `operation` может принимать следующие значения:

- Чтобы установить общее запирание (чтение), установите `operation` в значение `LOCK_SH` (или 1, в случае версии PHP ниже 4.0.1).

- Чтобы установить эксклюзивное запирание (запись), установите `operation` в значение `LOCK_EX` (или 2, в случае версии PHP ниже 4.0.1).

- Чтобы отпереть файл (после общего или эксклюзивного запирания), установите `operation` в значение `LOCK_UN` (или 3, в случае версии PHP ниже 4.0.1).

- Если вы не хотите, чтобы flock() блокировал файл при запирании, добавьте `LOCK_NB` (или 4, при использовании версии PHP ниже 4.0.1) к параметру `operation`.

flock() позволяет вам реализовывать простую модель чтения/записи, которая может быть использована практически на любой платформе (включая большинство проивзодных от Unix платформ, и даже Windows). Необязательный третий аргумент устанавливается в `TRUE`, если запирание также блокирует (код ошибки EWOULDBLOCK). Блокировка снимается при помощи этой же функции fclose() (которая также автоматически вызывается при завершении выполнения скрипта).

Возвращает `TRUE` в случае успешного завершения или `FALSE` в случае возникновения ошибки.

Пример 1. Пример использования функции flock()

`<?php $fp = fopen("/tmp/lock.txt", "w+"); if (flock($fp, LOCK_EX)) { // выполнить эксплюзивное запирание fwrite($fp, "Что-нибудь пишем\n"); flock($fp, LOCK_UN); // отпираем файл } else { echo "Не могу запереть файл !"; } fclose($fp); ?>`

> Замечание: Из-за того, что функции flock() необходим указатель на файл, вам может понадобиться воспользоваться специальным запирающим файлом для того, чтобы ограничить доступ к файлу, который вы намерены очищать путём открытыя его в режиме записи (используя "w" или "w+" в качестве аргумента функции fopen()).

Внимание

flock() не будет работать на NFS и многих других сетевых файловых системах. Обратитесь к документации вашей операционной системы для получения дополнительной информации.

В некоторых операционных системах flock() реализован на уровне процессов. При использовании многопоточных серверных API, таких как ISAPI, вы не можете полагаться на flock() для защиты ваших файлов от дугих PHP-скриптов, которые работают в параллельном потоке на том же сервере!

flock() не поддерживается на старых файловых системах вроде `FAT` и его производных, так что всегда будет возвращать `FALSE` в этом окружении (это особенно касается пользователей Windows 98).

Пред. | Начало | След.
filetype | Уровень выше | fnmatch