Skip to content

ice-leng/php_snowflake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php_snowflake

What is php_snowflake?

Twitter distributed ID generating Algorithm SnowFlake PHP implementation version.

Requires

  • PHP >= 5.6 (Below 5.5 self-testing)
  • Linux

Description

Pure PHP can not be achieved SnowFlake algorithm,because version of thread-safe(requires tid)and non-thread-safe(requires pid)can not generate same the format id(The only tid of this project system, so don't worried about pid conflict of multiple processes). And PHP as scripting language can not maintain sequence, sequence will be initialized again when the script is finished. In case of high concurrency pure PHP Implemented version of Snowflate algorithm does not have any effect. So was born this project, below is the different of Thread-safe version and Non-thread-safe version.

Non-thread-safe version (NTS)

0 2          15        20   28      32
---+----------------+--------------+----+----------+
00 |timestamp(ms)  | service_no   |pid | sequence |
---+----------------+--------------+----+----------+

Thread-safe version (TS)

0 2          15        20   28      32
---+----------------+--------------+----+----------+
00 |timestamp(ms)  | service_no   |tid | sequence |
---+----------------+--------------+----+----------+

Installation

phpize
./configure --with-php-config=/you/phppath/php-config
make
make install

Example

Attention: Interval of $service_no in the range of 0-99999. Beyond that scope, PHP will report a fatal mistake.

$service_no = 999;
for ($i=0; $i < 10; $i++) { 
        echo PhpSnowFlake::nextId($service_no)."\n";
}
/*

00146523488416500999000634280001
00146523488416500999000634280002
00146523488416500999000634280003
00146523488416500999000634280004
00146523488416500999000634280005
00146523488416600999000634280001
00146523488416600999000634280002
00146523488416600999000634280003
00146523488416600999000634280004
00146523488416600999000634280005

*/

License

Copyright (c) 2016 by Towers released under MIT License.

About

php 雪花算法扩展

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published