(PECL wincache >= 1.1.0)
wincache_lock — Получает эксклюзивную блокировку для данного ключа
$key
, bool $isglobal
= false
): boolПолучает эксклюзивную блокировку для данного ключа. Выполнение текущего скрипта будет заблокировано до тех пор, пока блокировка не будет получена. После получения блокировки другие сценарии, которые пытаются запросить блокировку с помощью того же ключа, будут заблокированы до тех пор, пока текущий скрипт не снимет блокировку с помощью wincache_unlock().
Использование wincache_lock() и wincache_unlock() может вызвать взаимную блокировку при выполнении скриптов PHP в многопроцессорной среде, такой как FastCGI. Не используйте эти функции, если вы не уверены, что вам это нужно. Для большинства операций с пользовательским кешем эти функции использовать не обязательно.
key
Имя ключа в кеше для включения блокировки.
isglobal
Определяет, является ли область блокировки общесистемной или локальной. Локальные блокировки относятся к пулу приложений в случае IIS FastCGI или ко всем процессам PHP, которые имеют один и тот же идентификатор родительского процесса.
Возвращает true
в случае успешного выполнения или false
в случае возникновения ошибки.
Пример #1 Пример использования wincache_lock()
<?php
$fp = fopen("/tmp/lock.txt", "r+");
if (wincache_lock(“lock_txt_lock”)) { // получить эксклюзивную блокировку
ftruncate($fp, 0); // обрезать файл
fwrite($fp, "Напишите что-нибудь здесь\n");
wincache_unlock(“lock_txt_lock”); // снять блокировку
} else {
echo "Не удалось получить блокировку!";
}
fclose($fp);
?>