array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.wincache-unlock.php', 1 => 'wincache_unlock', ), 'up' => array ( 0 => 'ref.wincache.php', 1 => 'WinCache 関数', ), 'prev' => array ( 0 => 'function.wincache-ucache-set.php', 1 => 'wincache_ucache_set', ), 'next' => array ( 0 => 'wincache.win32build.php', 1 => 'Windows でのビルド', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/wincache/functions/wincache-unlock.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PECL wincache >= 1.1.0)
wincache_unlock — 指定したキーの排他ロックを解放する
指定したキーに対して、wincache_lock() を使って取得した排他ロックを解放します。 別のプロセスがこのキーに対するロックをブロックされて待機している場合は、 そのプロセスがロックを取得できるようになります。
wincache_lock() および wincache_unlock() を使っていると、FastCGI のようなマルチプロセス環境において PHP スクリプトがデッドロックを引き起こすことがあります。 本当にそれが必要である場合でない限り、これらの関数は使わないようにしましょう。 キャッシュ上でのさまざまな操作の大半は、これらの関数を使う必要のないものです。
key
ロックを解放したいキャッシュ内のキーの名前。
例1 wincache_unlock() の使用
<?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);
?>