nash-swf/storage

数据库和Redis操作工具,支持断线重连,支持SWOOLE和OPEN-SWOOLE协程连接池

2.0.1 2022-03-23 13:07 UTC

This package is auto-updated.

Last update: 2024-04-23 19:14:31 UTC


README

介绍

数据库和redis操作工具,支持断线重连,支持SWOOLE协程,同时支持 swoole 4.4以上版本 和 openswoole 协程环境(协程环境下自动使用数据库连接池) 支持多连接实例配置,使用方法参考test案例

软件架构

并不强依赖swoole或openswoole扩展,普通环境下也可使用 基于medoo构建数据库操作工具类 基于Redis扩展构建redis操作工具类 详细API请参考对应工具文档

安装教程

compose require swf/storage

使用说明

<?php
require __DIR__ . '/vendor/autoload.php';
## 数据库操作
// 初始化数据库连接(协程环境自动使用连接池)
Swf\Storage\Database::initPool('default', [
    'type' => '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
require __DIR__ . '/vendor/autoload.php';
## redis操作

// 初始化数据库连接
Swf\Storage\Redis::initPool('default', [
    'host' => '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

require __DIR__ . '/../vendor/autoload.php';

// 初始化数据库连接
Swf\Storage\Database::initPool('default', [
    'type' => '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());
    }

});