add cs fixer and PHPStan and activate it (build 436)

This commit is contained in:
crazywhalecc
2022-03-15 18:05:33 +08:00
parent d01bd69aa5
commit 1706afbcd0
163 changed files with 4572 additions and 3588 deletions

View File

@@ -1,47 +1,56 @@
<?php /** @noinspection PhpUnused */
<?php
/** @noinspection PhpUnused */
declare(strict_types=1);
namespace ZM\Store\Lock;
use Swoole\Coroutine;
use Swoole\Coroutine\System;
use Swoole\Table;
use ZM\Console\Console;
class SpinLock
{
/** @var null|Table */
private static $kv_lock = null;
private static $kv_lock;
private static $delay = 1;
public static function init($key_cnt, $delay = 1) {
public static function init($key_cnt, $delay = 1)
{
self::$kv_lock = new Table($key_cnt, 0.7);
self::$delay = $delay;
self::$kv_lock->column('lock_num', Table::TYPE_INT, 8);
return self::$kv_lock->create();
}
public static function lock(string $key) {
public static function lock(string $key)
{
while (($r = self::$kv_lock->incr($key, 'lock_num')) > 1) { //此资源已经被锁上了
if (Coroutine::getCid() != -1) System::sleep(self::$delay / 1000);
else usleep(self::$delay * 1000);
if (Coroutine::getCid() != -1) {
System::sleep(self::$delay / 1000);
} else {
usleep(self::$delay * 1000);
}
}
}
public static function tryLock(string $key): bool {
public static function tryLock(string $key): bool
{
if (($r = self::$kv_lock->incr($key, 'lock_num')) > 1) {
return false;
}
return true;
}
public static function unlock(string $key) {
public static function unlock(string $key)
{
return self::$kv_lock->set($key, ['lock_num' => 0]);
}
public static function transaction(string $key, callable $function) {
public static function transaction(string $key, callable $function)
{
SpinLock::lock($key);
$function();
SpinLock::unlock($key);