tigercandy / snowflake

分布式全局唯一ID生成算法PHP实现

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Snowflake for PHP.


Version

Required

  • php >= 7.0.0
  • swoole >= 4.0.0

Use

use Mantis\Snowflake\Snowflake;

$snowflake = new SnowFlake(1);
$id = $snowflake->create();

Test

public function testSnowflake() {
    $snowflake = new SnowFlake(1);
    $chan = new chan(1000000);
    $n = 1000000;

    for ($i = 0; $i < $n; $i++) {
        go(function () use ($snowflake, $chan) {
            $id = $snowflake->create();
            $chan->push($id);
        });
    }

    go(function () use ($chan, $n) {
        $arr = [];
        for ($i = 0; $i < $n; $i++) {
            $id = $chan->pop();
            $this->assertFalse(in_array($id, $arr));
        }
        array_push($arr, $id);
    });

    $chan->close();
}

About

分布式全局唯一ID生成算法PHP实现


Languages

Language:PHP 100.0%