создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

PHP. Руководство по PHP. 2005

flock

Пред.

След.

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

    Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

    Ваше письмо×
    Free Web Hosting