You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
932 B
40 lines
932 B
<?php |
|
/** |
|
* @link http://www.yiiframework.com/ |
|
* @copyright Copyright (c) 2008 Yii Software LLC |
|
* @license http://www.yiiframework.com/license/ |
|
*/ |
|
|
|
namespace yii\mutex; |
|
|
|
use Closure; |
|
|
|
/** |
|
* Trait RetryAcquireTrait. |
|
* |
|
* @author Robert Korulczyk <robert@korulczyk.pl> |
|
* @internal |
|
*/ |
|
trait RetryAcquireTrait |
|
{ |
|
/** |
|
* @var int Number of milliseconds between each try in [[acquire()]] until specified timeout times out. |
|
* By default it is 50 milliseconds - it means that [[acquire()]] may try acquire lock up to 20 times per second. |
|
* @since 2.0.16 |
|
*/ |
|
public $retryDelay = 50; |
|
|
|
|
|
private function retryAcquire($timeout, Closure $callback) |
|
{ |
|
$start = microtime(true); |
|
do { |
|
if ($callback()) { |
|
return true; |
|
} |
|
usleep($this->retryDelay * 1000); |
|
} while (microtime(true) - $start < $timeout); |
|
|
|
return false; |
|
} |
|
}
|
|
|