GithubHelp home page GithubHelp logo

ifa6 / php_snowflake Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fgy58963/php_snowflake

0.0 3.0 0.0 19 KB

推特分布式主键生成算法的php扩展

M4 18.07% JavaScript 3.17% C 76.57% PHP 2.20%

php_snowflake's Introduction

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.

php_snowflake's People

Contributors

sxdd avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.