=========================================================== How to test CSync ----------------------------------------------------------- ブロック用のレコードをtbl_syncに入れておく。 テストしたいKeyと、タイムアウトしない遠い将来の時間をstimeで指定する。 -------------------------- key => prizes:1001 stime => 2147483649 -------------------------- これで、このKeyでacquireしようとするコードをブロックできる。 acquireする側は$tryを10ぐらいに数に設定するとテストしやすい。 ----------------------------------------------------------- $sync_id=CSync::acquire("prizes:{$cnts_id}",10); ----------------------------------------------------------- acquireのwhileループに「_alog("wait:{$try}");」をいれておくと 待ち状態が調べられる。 ----------------------------------------------------------- public static function acquire($key,$max_try=0){ self::cleanup(); if(!$max_try){$max_try=self::$max_try;} $try=$max_try; while($try&&self::isLocked($key)){ _alog("wait:{$try}"); sleep(1); self::cleanup(); $try--; } if(!$try){return false;} ----------------------------------------------------------- 待ち状態になったところで、ブロック用のレコードをはずして、 待ち状態から実行状態に変わることを確認する。 ブロック用のレコードのはずし方だが、消してしまってもいいのだが、 Keyに一文字加えるだけでもよい。例えば、「prizes:1001」の最初に 'x'を加えて、「xprizes:1001」にする。 ===========================================================