buexplain/roaring
Composer 安装命令:
composer require buexplain/roaring
包简介
基于“https://github.com/RoaringBitmap/CRoaring”给php提供完善的bitmap操作能力
README 文档
README
基于https://github.com/RoaringBitmap/CRoaring实现的php版本bitmap
安装
composer require buexplain/roaring
示例
require "vendor/autoload.php"; use Roaring\Bitmap; //求并集 $a = new Bitmap(); $b = new Bitmap(); $a->addMany([1, 2]); $b->addMany([2, 3]); $c = $a->or($b); print_r($c->toArray()); //[1, 2, 3] //求交集 $a = new Bitmap(); $b = new Bitmap(); $a->addMany([1, 2, 3]); $b->addMany([2, 3, 4]); $c = $a->and($b); print_r($c->toArray()); //[2, 3] //求差集 $a = new Bitmap(); $b = new Bitmap(); $a->addMany([1, 2, 3]); $b->addMany([1, 3, 4]); $c = $a->andNot($b); print_r($c->toArray()); //[2] //求对称差集 $a = new Bitmap(); $b = new Bitmap(); $a->addMany([1, 2, 3]); $b->addMany([3, 4, 5]); $c = $a->xOr($b); print_r($c->toArray()); //[1, 2, 4, 5] //批量迭代整个bitmap $a = new Bitmap(); $a->addRange(0, 100); $generator = $a->iterate(10); foreach ($generator as $v) { print_r($v); //每次循环最多获取10个值 }
注意事项
PHP的整型数 int 的字长和平台有关, PHP 不支持无符号的 int,基于这个原因,要注意以下两点:
- 使用64位的bitmap时,能写入的最大值是
PHP_INT_MAX常量值。 - 当反序列化的数据来自其它语言的实现时,因为php对
uint64支持范围不完整,所以可能会出现异常情况,这一点尤其要注意。
centos下安装php的ffi扩展
编译安装
/usr/local/bin/php8.2.10/bin/phpize
./configure --with-php-config=/usr/local/bin/php8.2.10/bin/php-config
make && make install
打开配置文件中的ffi扩展开关
php --ini vi /usr/local/bin/php8.2.10/etc/php.ini
错误解决
No package 'libffi' found,执行命令:yum install libffi-devel错误:只允许在 C99 模式下使用‘for’循环初始化声明,升级gcc
特别感谢
感谢https://github.com/M31ayu同学review代码、提供darwin、arm64的编译机器。
buexplain/roaring 适用场景与选型建议
buexplain/roaring 是一款 基于 C 开发的 Composer 扩展包,目前已累计 33 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 09 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 buexplain/roaring 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 buexplain/roaring 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 33
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 11
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2025-09-24