走在云存储前沿,今日V3.1开发版本完善Swift Storage云存储接口,支持V2.0的Token接口

Swift Storage 是 openstack 开发的一套非常优秀的云存储方案,地址 http://www.openstack.org/software/openstack-storage/

通过它,你可以部署一个属于自己的云存储方案,它是基于key-value储存对象的。比如新浪SAE的云存储就是使用这个搭建的,具有非常稳定可靠的使用表现。

MyQEE 提供的 Storage 可以支持数据库驱动、文件驱动、Redis驱动以及Swift驱动,目前几乎还没有可以支持Swift协议的框架,迈启PHP框架通过驱动的方式扩展支持Swift协议,走在了云存储的前沿。

MyQEE紧跟Swift的脚本,继OpenStack提供相关的token V2.0接口后,MyQEE对Swift的驱动进行更新,目前已支持V2.0的Token接口。

Storage的使用方法:

$config = array
(
    'driver'        => 'Swift',
    'driver_config' => 'https://username:password@localhost:8080/v2.0?region=test&tenant_name=default&warehouses=mytest&prefix=test',
);
$storage = new Storage($config);

// 写入
$storage->set('test/123', 'hello');

// 读取
$storage->get('test/123');

以上代码也可以写成:

$config = array
(
    'driver' => 'Swift',
    'driver_config' => array
    (
        'host'              => 'localhost',     // 服务器IP或域名
        'user'              => 'username',      // 用户名
        'pass'              => 'password',      // 密码(key)
        'warehouses'        => 'mytest',        // 储存仓库,类似数据库的库,可不设置,默认为 default
        // 以下是token接口为v2.0的时候必须
        'tenant_name'       => 'default',       // Tenant 名称
        'region'            => 'test',          // Region
        // 以下为可选参数
        'https'             => true,            // true || false , 默认 false
        'token_api_version' => 'v2.0',          // 版本,不设置则默认 v2.0
        'port'              => 8080,            // 端口,默认http 为 80,https 为 443
        'prefix'            => 'test',          // key的前缀,默认为空
    ),
);
$storage = new Storage($config);

// 写入
$storage->set('test/123', 'hello');

// 读取
$storage->get('test/123');

MyQEE 全新首页上线, V3.0 RC1版本发布

经过1年的大版本调整,全新的V3.0 RC1版本已经发布,并且全新设计更新了官网。

这次更新经历了较漫长的过程,本来是打算发布V2.1版本的,但是在各位热心网友的提议下,直接更新到了3.0版本,并且在系统上相比有了较华丽的升级。

下面介绍下由2.0升级到3.0后带来的变化和优点:相比V2.0中增加了modules和drivers,在核心类库中把类似 DatabaseSessionSession 等大型类库都单独分离模块(即modules),并且目前已把 Database 的各个驱动分离到drivers里。这样做迎合了当前流行的模块化开发的趋势,模块化开发的好处就是可以最大限度的自定义。

更加注重系统安全:在V2的基础上,V3对系统内部调用加强了安全校验规则,并使用动态密码保证系统能够更加安全。增加了对 CSRF 攻击的防范。

另外,MyQEE也开始支持 Compress 包管理器安装和更新了,目前此功能还处于测试阶段,待正式版本发布后,你的程序可以直接用过包管理器进行升级了,再也不用担心自己的系统落后了。

PS: 由于后台类库还在升级中,所以RC1版本里不含目前官网的新版后台演示

以下是V3升级的一些列表

  • 核心部分改动及优化
    • 类库、模块、ORM、控制器等文件名命名实现全统一,全部改为小写方式
    • libraries/myqee/core类库改为根目录core/目录,并取消 $config['libraries']['core'] 的配置项,并增加DIR_CORE 常量,此常量目录为core目录
    • libraries/bootstrap.php 移动到core目录中,并修改index.php中include文件路径
    • 完善 Bootstrap::$base_url 的获取
    • 优化Session的读取,对生成的SessionID增加校验功能,防止伪造
    • 增加500错误数据收集的收集功能,可以关闭(配置中$config['error500']['close'] = true;即可)
    • 增加上传类库,并支持多驱动协议存放
    • Core::set_project($project) 改为 Core::change_project($project)
    • Session类库优化
    • ORM Finder中 get_by_id() 和 get_by_ids() 方法增加第二个参数$use_master指定是否在主库上查询,默认false
    • 特殊控制器目录修改,解决部分主机不支持特殊字符目录的问题
      • 后台控制器  controllers/[admin]/ 目录改为 controllers-admin/
      • 命令行控制器 controllers/[shell]/ 目录改为 controllers-shell/
      • 系统控制器  controllers/[system]/目录改为 controllers-system/
  • 控制器相关优化
    • 类命名优化,取消文件夹下双下划线命名方式,统一改成和class,model等相同的命名规则
    • 修复控制器参数大小BUG
    • 增加RESTFul的支持,RESTFul的控制器存放在 controllers-rest/ 目录,可使用 IS_REST_MODE 进行判断
    • 避免系统基础控制器可直接被访问到
    • 重写 Controller_Shell::getopt() 获取参数的代码,实现等同于系统的getopt()方法的功能
  • 数据库相关优化:
    • 增加慢查询日志功能,可在config.php中设置慢查询 $config['slow_query_mtime'] 参数
    • 各驱动优化,避免在连接数据库失败后将数据库用户名、密码等信息暴露到错误堆叠里
    • MongoDB优化主从模式查询,改Group查询为aggregate查询(MongoDB必需2.2版本以上,MongoDB扩展必需1.3+版本)
    • 查询where支持!=和<>,例如:$db->where('id!=', 3) 或 $db->where('id<>', 3); 表示查询条件为id不等于3
    • MySQL驱动支持distinct某个字段,例如 $db->distinct('test_field')
    • Database增加select_max()select_min()select_avg()select_sum() 等高级查询函数
    • 增加 set_builder($builder) 和 recovery_last_builder() 方法,适用与在多条查询中具有类似条件的情况
    • reset()方法支持重置单个信息,比如 $db->reset('select'); 可单独重置select的参数
    • 程序里支持$db = new Database('mysqli://root:123456@127.0.0.1/myqee/')这样的快速连接写法,省去数据库配置的麻烦
  • 代码开发相关优化
    • 将shell目录改名bin目录,增加 merge-assetsview-error500-log 等开发及部署工具
    • 优化Debug功能,支持Chrome浏览器下FirePHP功能
    • statics 控制器改为 assets/devmode/ 控制器,支持开发版本实时优化处理输出css(包括less)和js
  • Administration类库
    • 后台类库使用全新界面,视图使用bootstrap界面框架 详见 http://getbootstrap.com/
    • CSS采用less方式定义,方便修改
    • JS改为模块化,更方便二次开发
    • 支持手机版本
  • 其它
    • 语言包完善
    • 各种细节优化