php-ext-snowflake

分布式 ID 生成算法
授权协议 PHP
开发语言 C/C++ PHP JavaScript
所属分类 应用工具、 个人助理软件
软件类型 开源软件
地区 国产
投 递 者 宋晋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

基于 Twitter SnowFlake 的分布式 ID 生成算法,使用 C 实现的 php Extension。

  • 默认生成 ID 是一个 64 位 long 型数字。单机每秒内理论上最多可以生成 1024*(2^12),也就是 409.6 万个 ID(1024 X 4096 = 4194304)。本机测试生成 100 万个 ID,耗时 0.24624609947205 秒。
  • 可根据自身情况调整 bit 位数,从而生成长度合适的 ID。
  • /* snowflake extension for PHP */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #include "ext/standard/info.h" #include "php_snowflake.h" #include "snowflake_arginfo.h" #include #in

  • /* snowflake extension for PHP */ #ifndef PHP_SNOWFLAKE_H # define PHP_SNOWFLAKE_H extern zend_module_entry snowflake_module_entry; # define phpext_snowflake_ptr &snowflake_module_entry # define PHP_S

  • 最近在做个项目,需要用到唯一ID的生成,原本在Java和Delphi中,做了一个生成20位字符串(160bit)形式的唯一ID的算法,但是对比GUID(128bit),除了看起来比他短之外,其他并无优势。所以考虑重新采用Twitter-Snowflake的算法,做一个64bit的唯一ID生成。 但是在纯PHP语言环境中,维护序列号是个麻烦的问题,所以考虑写php扩展,用C在底层实现支持。 好了,现

  • <?php declare(strict_types=1); namespace App\Model; use Hyperf\Snowflake\IdGeneratorInterface; use Hyperf\Utils\ApplicationContext; use Hyperf\Utils\Str; use PhpOffice\PhpSpreadsheet\IOFactory; us

 相关资料
  • 本文向大家介绍PHP生成唯一ID之SnowFlake算法,包括了PHP生成唯一ID之SnowFlake算法的使用技巧和注意事项,需要的朋友参考一下 前言:最近需要做一套CMS系统,由于功能比较单一,而且要求灵活,所以放弃了WP这样的成熟系统,自己做一套相对简单一点的。文章的详情页URL想要做成url伪静态的格式即xxx.html 其中xxx考虑过直接用自增主键,但是感觉这样有点暴露文章数量,有同学

  • 主要内容:1.UUID,2.数据库自增Id,3.基于数据库集群模式,4.基于数据库的号段模式,5.Redis,6.Snowflake,7.百度(uid-generator),8.Leaf,9.TinyId生成方式: 1.UUID 2.数据库自增ID 3.数据库多主模式 4.号段模式 5.Redis 6.雪花算法(SnowFlake) 7.滴滴出品(TinyID) 8.百度 (Uidgenerator) 9.美团(Leaf) 1.UUID UUID的生成简单到只有一行代码,输出结果 c2b8c2b

  • 有时我们需要能够生成类似MySQL自增ID这样不断增大,同时又不会重复的id。以支持业务中的高并发场景。比较典型的,电商促销时,短时间内会有大量的订单涌入到系统,比如每秒10w+。明星出轨时,会有大量热情的粉丝发微博以表心意,同样会在短时间内产生大量的消息。 在插入数据库之前,我们需要给这些消息、订单先打上一个ID,然后再插入到我们的数据库。对这个id的要求是希望其中能带有一些时间信息,这样即使我

  • 如何自定义生成固定长度的字符串ID,8-12个字符 格式:业务标记_xxxxxxxxxx 如:user_Nuxq23s24dxa1ScSx 要求:1ms生成100W个 或有什么现成的库可以使用,麻烦老大们贴下代码

  • 分布式ID常见生成策略 分布式ID生成策略常见的有如下几种: 数据库自增ID。 UUID生成。 Redis的原子自增方式。 数据库水平拆分,设置初始值和相同的自增步长。 批量申请自增ID。 雪花算法。 百度UidGenerator算法(基于雪花算法实现自定义时间戳)。 美团Leaf算法(依赖于数据库,ZK)。 其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布

  • 主要内容:(1)方案一:独立数据库自增id,(2)方案二:uuid,(3)方案三:获取系统当前时间,(4)方案四:snowflake算法的思想分析,(5)snowflake算法的代码实现,(6)snowflake算法一个小小的改进思路上一篇文章,我们聊了一下分库分表相关的一些基础知识,具体可以参见:《用真实业务场景告诉你,高并发下如何设计数据库架构?》。 这篇文章,我们就接着分库分表的知识,来具体聊一下全局唯一id如何生成。 在分库分表之后你必然要面对的一个问题,就是id咋生成? 因为要是一个表