# swf-storage **Repository Path**: nash-su/swf-storage ## Basic Information - **Project Name**: swf-storage - **Description**: No description available - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-15 - **Last Updated**: 2022-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # swf-storage #### 介绍 数据库和redis操作工具,支持断线重连,支持SWOOLE协程,同时支持 swoole 4.4以上版本 和 openswoole 协程环境(协程环境下自动使用数据库连接池) 支持多连接实例配置,使用方法参考test案例 #### 软件架构 并不强依赖swoole或openswoole扩展,普通环境下也可使用 基于medoo构建数据库操作工具类 基于Redis扩展构建redis操作工具类 详细API请参考对应工具文档 #### 安装教程 compose require swf/storage #### 使用说明 ```php 'mysql', 'host' => 'db', 'database' => 'test', 'username' => 'test', 'password' => 'test', 'port' => 3306, 'size' => 64, ]); // 增 Swf\Storage\Database::instance('default')->insert('account', ['username' => 'nash', 'age' => 12,]); // 最新插入id var_dump(Swf\Storage\Database::instance('default')->id()); // 查 Swf\Storage\Database::instance('default')->get('account', '*', ['age' => 12,]); // 改 Swf\Storage\Database::instance('default')->update('account', ['age' => 13], ['age' => 12,]); // 删 Swf\Storage\Database::instance('default')->delete('account', ['age' => 13]); // 协程中使用 Swoole\Coroutine\run(function () { // 增 Swf\Storage\Database::instance('default')->insert('account', ['username' => 'nash', 'age' => 12,]); // 最新插入id var_dump(Swf\Storage\Database::instance('default')->id()); // 查 Swf\Storage\Database::instance('default')->get('account', '*', ['age' => 12,]); // 改 Swf\Storage\Database::instance('default')->update('account', ['age' => 13], ['age' => 12,]); // 删 Swf\Storage\Database::instance('default')->delete('account', ['age' => 13]); }); ``` ```php 'redis', 'database' => 0, 'port' => 6379, 'size' => 64, ]); Swf\Storage\Redis::instance('default')->set('name', 123123); $data = Swf\Storage\Redis::instance('default')->get('name'); var_dump($data); ``` ```php 'mysql', 'host' => 'db', 'database' => 'test', 'username' => 'test', 'password' => 'test', 'port' => 3306, 'size' => 64, ]); // 初始化数据库连接 Swf\Storage\Database::initPool('default123', [ 'type' => 'mysql', 'host' => 'db', 'database' => 'test', 'username' => 'test', 'password' => 'test', 'port' => 3306, 'size' => 64, ]); // 协程中验证多数据库连接事务提交和回退。 // 由Transaction对象统一确定全部提交或全部回退 Swoole\Coroutine\run(function(){ try { // 增 // 开启事务 Swf\Storage\Transaction::start(); // 使用多个数据库连接操作不同的内容 Swf\Storage\Database::instance('default')->insert('account', ['username' => 'nash', 'age' => 12,]); Swf\Storage\Database::instance('default123')->insert('account', ['username' => 'nash', 'age' => 13,]); # throw new Exception('错误内容'); // 事务提交(多个数据库操作均成功或均失败) Swf\Storage\Transaction::complete(); } catch (Throwable $e) { var_dump(1, $e->getTraceAsString()); } }); ```