外部链接失效,并且大多数时候反斜杠“\”用于“转义字符”。无论如何,谢谢。
(PECL wincache >= 1.1.0)
wincache_lock — 获取给定键的独占锁
获取给定键的独占锁。当前脚本的执行将被阻塞,直到能够获取锁为止。一旦获取到锁,尝试使用相同键请求锁的其他脚本将被阻塞,直到当前脚本使用 wincache_unlock() 释放锁。
在类似 FastCGI 的多进程环境中执行 PHP 脚本时,使用 wincache_lock() 和 wincache_unlock() 可能会导致死锁。除非您绝对确定需要使用这些函数,否则请勿使用它们。对于用户缓存的大多数操作,不需要使用这些函数。
key
要获取锁的缓存中键的名称。
isglobal
控制锁的作用域是系统范围还是本地范围。在 IIS FastCGI 的情况下,本地锁的作用域限制在应用程序池中,或者限制在具有相同父进程标识符的所有 php 进程中。
示例 #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);
?>
用户应该知道字符“\”不能作为锁名称的一部分。反斜杠不被允许的原因是我们在使用 CreateMutex 调用,如 http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx 中所述。根据本文,第三个参数不能包含“\”字符,该字符是锁名称。
这意味着以下代码将无法工作。
<?php
$ret_val = wincache_lock("C:\WINDOWS\Temp/cache");
echo $ret_val . '<br>';
$ret_val = wincache_unlock("C:\WINDOWS\Temp/cache");
echo $ret_val . '<br>';
?>