burn/yii2-db-archiver

DbArchiver 通过 Yii2 ActiveRecord 模型从数据库中存档和恢复旧数据。对于大型表格,允许直接从 MySQL 数据库导出文件(快速存档,但文件仅保存于 MySQL 服务器驱动器上)。

安装次数: 5,814

依赖关系: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

1.0.2 2015-07-16 10:03 UTC

This package is auto-updated.

Last update: 2024-08-28 21:28:38 UTC


README

这是什么?

DbArchiver 通过 Yii2 ActiveRecord 模型从数据库中存档和恢复旧数据。对于大型表格,允许直接从 MySQL 数据库导出文件(快速存档,但文件仅保存于 MySQL 服务器驱动器上)。

安装

使用它需要 Yii2 框架和 PHP 5.4 或更高版本。

建议通过 [composer][] 在您的 composer.json 中的 require 部分添加以下内容进行安装:

"burn/yii2-db-archiver": "dev-master"

之后运行 composer update

使用方法

首先在主应用配置中设置 dbArchiver 组件,如下所示

    'components' => [
            'dbArchiver' => [
                'class'    => 'burn\dbArchiver\DbArchiver',
                'dumpPath' => '/home/'
            ]
        ],

示例控制台动作,使用 DbArchiver 组件对大型表格进行直接存档和以 Unix 时间戳格式存储的日期列

  /**
   * @throws \yii\base\InvalidConfigException
   */
  public function actionArchiveErrorsLog()
  {
      /** @var \burn\dbArchiver\DbArchiver $dbArchiver */
      $dbArchiver = \Yii::$app->get('dbArchiver');
      $dbArchiver
          ->getQuery()
          ->setArchivedModel(LogError::className())
          ->setDirect(true)
          ->setDateColumn('log_time')
          ->setMkTimeDateColumn(true);
      if (!$dbArchiver->actionArchive()) {
          \Yii::error(LogError::tableName() . ' table not archived!');
          echo 'Something went wrong! '. LogError::tableName() . ' table not archived!';
      }
  }

恢复控制台动作的示例

    /**
    * @throws \yii\base\InvalidConfigException
    */
    public function actionRestoreErrorsLog($filename)
    {
        /** @var \burn\dbArchiver\DbArchiver $dbArchiver */
        $dbArchiver = \Yii::$app->get('dbArchiver');
        $dbArchiver
            ->getQuery()
            ->setArchivedModel(LogError::className())
            ->setDirect(true);
        if (!$dbArchiver->actionRestoreFromFile($filename)) {
            \Yii::error(LogError::tableName() . ' table not restored!');
            echo 'Something went wrong! '. LogError::tableName() . ' table not restored!';
        }
    }