Вы не зарегистрированы? Нажмите здесь для регистрации.
Забыли пароль? Запросите новый здесь.
|
Вы должны авторизироваться, чтобы добавить сообщение.
|
|
|
Последние активные темы форума |
|
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).
|
|
· Гостей: 18
· Пользователей: 0
· Всего пользователей: 453
· Новый пользователь: ZDA
|
|