外部链接已失效,大多数情况下反斜杠 "\" 用于 "转义字符"。无论如何,感谢您的关注。
(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, "Write something here\n");
wincache_unlock(“lock_txt_lock”); // 释放锁
} else {
echo "Couldn't get the lock!";
}
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>';
?>