Download the PHP package mehdi9324/mengine without Composer
On this page you can find all versions of the php package mehdi9324/mengine. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Please rate this library. Is it a good library?
Informations about the package mengine
Laravel Package for Matching Engine
快速开始
- 安装:
composer require sting_bo/mengine
- 复制配置文件:
php artisan vendor:publish
依赖
- predis
号外
- 已经出Golang微服务撮合啦,欢迎使用并提issue
使用说明
-
已有数据的系统如果使用此库,可以自己写一个初始化脚本,先把数据跑入队列
-
用户下单
- 下单后,先存入数据库,然后才开始下面步骤,实例化单据对象
交易方向
与交易精度
可在配置文件灵活设置
- push到队列,队列任务需要手动开启
开启队列任务:
php artisan queue:work --queue=abc2usdt
也可以使用horizon
与supervisor
来辅助,事半功倍!
队列消费时会进入撮合程序,大概的步骤如下:
- 获取匹配委托订单
- 如果没有匹配的订单,则进入委托池,触发委托池变更事件,详见第5点
- 如果有匹配的委托,程序撮合,更新委托池数据
-
交易成功会触发事件,开发者要在监听器里处理有交易的委托单,比如更新数据库数据,WebSocket通知等 在EventServiceProvider里为撮合成功的事件注册监听器:
- 如果只是部分成交,则剩余部分进入委托池,触发委托池变更事件,K线或者深度列表变更通知等, 注册监听器如下:
-
用户撤单
撤单流程应该是先查询数据库确认是否可撤销,再从redis里删除数据成功,最后更新回数据库
此撮合引擎没有实现像数据库那样的锁机制,为了防止有单子在被撮合时又有撤销的命令出现,所以下单与撤单都走的同一个队列,保证了顺序性,每个交易对是隔离的队列,效率也有一定的保证,但开发需要实现异步通知用户功能,注册监听器如下:
-
获取某个交易对买/卖深度列表
总结
本地垃圾笔记本上测试,交易对撮合速度平均在200笔/s,后续将继续优化撮合速度
All versions of mengine with dependencies
PHP Build Version
Package Version
Requires
predis/predis Version
^1.1
The package mehdi9324/mengine contains the following files
Loading the files please wait ....