wincache_lock
(PECL wincache >= 1.1.0)
wincache_lock — 指定したキーで排他ロックを確保する
説明
指定したキーについての排他ロックを確保します。 ロックを確保するまでは、現在のスクリプトの実行はブロックされます。 ロックを確保できたら、その後は他のスクリプトから同じキーのロックを要求があってもそれをブロックします。 現在のスクリプトが wincache_unlock() でロックを解放するまでは他のスクリプトからロックを確保できません。
警告
wincache_lock() および wincache_unlock() を使っていると、FastCGI のようなマルチプロセス環境において PHP スクリプトがデッドロックを引き起こすことがあります。 本当にそれが必要である場合でない限り、これらの関数は使わないようにしましょう。 キャッシュ上でのさまざまな操作の大半は、これらの関数を使う必要のないものです。
パラメータ
key
-
ロックを取得したいキャッシュ内のキーの名前。
isglobal
-
ロックのスコープをシステム全体にするかローカルにするかを制御します。 ローカルロックのスコープは、IIS FastCGI のアプリケーションプール内 あるいは同一の親プロセス ID を持つ 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);
?>
参考
- wincache_unlock() - 指定したキーの排他ロックを解放する
- wincache_ucache_set() - 変数をユーザーキャッシュに追加し、変数が既にキャッシュに存在する場合はそれを上書きする
- wincache_ucache_get() - ユーザーキャッシュに格納された変数を取得する
- wincache_ucache_delete() - 変数をユーザーキャッシュから削除する
- wincache_ucache_clear() - ユーザーキャッシュの中身全体を削除する
- wincache_ucache_exists() - 変数がユーザーキャッシュに存在するかどうかを調べる
- wincache_ucache_meminfo() - ユーザーキャッシュのメモリ使用状況についての情報を取得する
- wincache_ucache_info() - ユーザーキャッシュにキャッシュされたファイルについての情報を取得する
- wincache_scache_info() - セッションキャッシュにキャッシュされたファイルについての情報を取得する
+add a note
User Contributed Notes 2 notes
PrisonDoom ¶
5 years ago
The external link was off and the backslash "\" most of time are used for "scape character". Anyway, regards.
donraman at microsoft dot com ¶
14 years ago
User should be aware that character '\' is not allowed as part of lock name. The reason why backslash is not allowed is because we are using CreateMutex call as described at http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx. As per this article third parameter cannot have '\' character which is the lock name.
This means below code will not work.
<?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>';
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google