agentsib/binary-search
Composer 安装命令:
composer require agentsib/binary-search
包简介
Binary Search Library for php
README 文档
README
This is a fork of keepper/binary-search, the original maintainer does not continue maintenance.
Binary Search Library for php
Реализация алгоритма бинарного поиска на PHP
Умеет работать с большими файлами без чтения файла целиком в память.
Пример использования
1. Получаем файл при помощи
wget http://www.fms.gov.ru/upload/expired-passports/list_of_expired_passports.csv.bz2
2. Распаковываем
bzip2 -d list_of_expired_passports.csv.bz2
3. Сортируем
sort list_of_expired_passports.csv > source.csv
4. Консольная утилита для поиска просроченного файла в БД недействительных паспортов ФМС
touch fms.php
Редактируем файл fms.php пишем простой код
include_once 'vendor/autoload.php'; if (count($argv) < 3) { // Вывод справки print "Используйте php5 test.php файл искомая строка\n"; exit; } else { // Берем атрибуты переданные с коммандной строки $filepath = $argv[1]; $pattern = $argv[2]; } // Создаем объект источник данных для поиска $dataSource = new \BinarySearch\DataSource\FileData($filepath); // Инициализируем класс бинарного поиска $searcher = new \BinarySearch\BinarySearch($dataSource); // Для отладки можем инжектировать объект логгер //$searcher->injectLogger(new \BinarySearch\ConsoleLog()); // Производим поиск позиции в источники данных, в которой находится искомое значение $position = $searcher->search($pattern); if ( is_null($position) ) { print 'Не найдено'."\n"; exit; } print 'Найдено на позиции: '.$position."\n"; // Идем на указаную позицию и читаем найденое $dataSource->moveTo($position); print 'Значение: ['.$dataSource->getData().']'."\n";
5. Пробуем (размер файла source 1,2 Гб)
5.1. На отсутствующем значении:
time php5 ./test.php ./source.csv 5005,000435
Не найдено
real 0m0.095s
user 0m0.018s
sys 0m0.009s
5.2. На присутствующем значении:
time php5 ./test.php ./source.csv 0000,000435
Найдено на позиции: 434
Значение: [0000,000435]
real 0m0.104s
user 0m0.009s
sys 0m0.018s
agentsib/binary-search 适用场景与选型建议
agentsib/binary-search 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 59 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 03 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 agentsib/binary-search 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 agentsib/binary-search 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 59
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0
- 更新时间: 2018-03-06