downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

wincache_ocache_fileinfo> <wincache_fcache_meminfo
[edit] Last updated: Fri, 07 Jun 2013

view this page in

wincache_lock

(PECL wincache >= 1.1.0)

wincache_lock 指定したキーで排他ロックを確保する

説明

bool wincache_lock ( string $key [, bool $isglobal = false ] )

指定したキーについての排他ロックを確保します。 ロックを確保するまでは、現在のスクリプトの実行はブロックされます。 ロックを確保できたら、その後は他のスクリプトから同じキーのロックを要求があってもそれをブロックします。 現在のスクリプトが wincache_unlock() でロックを解放するまでは他のスクリプトからロックを確保できません。

警告

wincache_lock() および wincache_unlock() を使っていると、FastCGI のようなマルチプロセス環境において PHP スクリプトがデッドロックを引き起こすことがあります。 本当にそれが必要である場合でない限り、これらの関数は使わないようにしましょう。 キャッシュ上でのさまざまな操作の大半は、これらの関数を使う必要のないものです。

パラメータ

key

ロックを取得したいキャッシュ内のキーの名前。

isglobal

ロックのスコープをシステム全体にするかローカルにするかを制御します。 ローカルロックのスコープは、IIS FastCGI のアプリケーションプール内 あるいは同一の親プロセス ID を持つ PHP プロセス群全体となります。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 wincache_lock() の使用

<?php
$fp 
fopen("/tmp/lock.txt""r+");
if (
wincache_lock(“lock_txt_lock”)) { // 排他ロックを確保します
    
ftruncate($fp0); // ファイルを切り詰めます
    
fwrite($fp"Write something here\n");
    
wincache_unlock(“lock_txt_lock”); // ロックを解放します
} else {
    echo 
"Couldn't get the lock!";
}
fclose($fp);
?>

参考



add a note add a note User Contributed Notes wincache_lock - [1 notes]
up
0
donraman at microsoft dot com
3 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>';

?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites