部署说明

框架部署

测试部署

  1. 部署一个php >= 5.2的网络环境, 若需Swoole环境另见
  2. 下载框架代码 https://github.com/tolizhan/oFrame/https://gitee.com/tolizhan/oFrame/
  3. 解压到任意可访问的路径 Linux下 创建 /data 文件, 给 -R 可读写权限
  4. 访问框架根目录, 显示界面并且没有红色报错便部署成功

正式部署

  1. 打开框架配置/include/of/config.php
  2. 修改config键值为null 目的是删除 demo 对框架的重写
  3. 修改debug键值, 生产环境一定要改为"字符串"密码, 防止生产环境敏感信息泄漏, 带密码访问控制台
  4. 修改db键值连接一个数据库
  5. 根据实际需求开关 preloaded 中对应的模块
  6. 删除/demo文件夹
  7. 若为分布式架构, 将各节点/data文件夹挂载到同一个目录
  8. 如没特殊需求, 以下三项可忽略
  9. 框架可放在任意路径下,也可以改名,这里我们确定在"/include/of"
  10. 修改配置ofDir为"/include/of", 修改rootDir键值为strtr(substr(__FILE__, 0, -22), '\\', '/') 目的是定义磁盘根路径到 "/include/of"
  11. 修改rootUrl键值 若rootDir为挂载路径, 将导致rootUrl自动计算出错, 此时需要指定

系统访问

  1. URL格式可以通过系统入口定制
    如: /index.php?c=控制类&a=方法名 或 /index.php/控制类/方法名 等
  2. CLI模式可以通过"$GLOBALS键值:url编码"来设置超全局变量 可通过 _TZ指定时区, _IP指定IP, _RL指定ROOT_URL
    如: php /index.php "_TZ:Europe/London" "get:c=demo_index&a=index" "post:test=demo" 设置$GLOBALS['_GET'] 和 $GLOBALS['_POST']值

框架升级

  1. 用新版框架替换旧版不包含配置的全部文件 (注意删除新版中不存在的文件)
  2. 查看旧版到新版本号的变更日志 changelog.txt
  3. 按照日志中"-"开头的变化从低到高版升级当前系统

入口文件 /index.php 详细查看入门演示综合演示

框架入口 OF_DIR/of.php

<?php
/**
 * 加载并初始化框架 of.php是该框架唯一入口
 * 系统可以设置多个入口文件, 每个文件仅加载 ROOT_DIR/of.php 便好
 * 加载成功后可直接调用封装方法, 如: of_base_com_str::uniqid()
 */
require dirname(__FILE__) . '/include/of/of.php';

调度入口 of::dispatch

<?php
/**
 * 项目的请求方式可以多种多样,甚至是面向过程方式开发,这个文件的功能是将请求信息转化为标准方式,并做一些如用户验证等附加动作
 * 下面定义请求方式为$_GET['c']是请求类,$_GET['a']是请求的方法
 */
require dirname(__FILE__) . '/include/of/of.php';

//调度代码
if (isset($_GET['c'])) {
    //类名, 动作, 安全校验(调用的类文件返回值必须与此值相同才可通过, null=不验证, false=不通过)
    $result = of::dispatch($_GET['c'], isset($_GET['a']) ? $_GET['a'] : 'index',  true);
    //返回数组转成json
    if (is_array($result)) echo json_encode($result);
}

配置数据库 OF_DIR/config.php

单库连接配置

    <?php
    return array(
        ...
        //数据库连接池
        'db' => array(
            //数据库连接方式(mysqlPdo, mysqli, mysql, polar, tidb, mssqlPdo)
            'adapter'        => 'mysqli',
            //数据库连接参数
            'params'         => array(
                //数据库地址
                'host'       => '127.0.0.1',
                //数据库端口
                'port'       => 3306,
                //数据库帐号
                'user'       => 'root',
                //数据库密码
                'password'   => 'admin',
                //默认数据库
                'database'   => 'test',
                //默认字符集
                'charset'    => 'utf8mb4',
                //数据库时区, 配合timestamp类型实现跨时区同步, 默认true=框架时区, false=数据库时区, "±00:00"=指定时区
                'timezone'   => true,
                //设置隔离级别, ""=跟随系统, "READ UNCOMMITTED", "READ COMMITTED", "READ COMMITTED", "SERIALIZABLE"
                'isolation'  => 'READ COMMITTED',
                //是否长连接, true=长连接, false=短连接
                'persistent' => false
            )
        ),
        ...
    )

读写混合配置

    <?php
    return array(
        ...
        //数据库连接池
        'db' => array(
            //在可用的连接中随机读取一个作为连接
            array(单库配置的结构),
            array(单库配置的结构),
            ...
        ),
        ...
    )

读写分离配置

    <?php
    return array(
        ...
        //数据库连接池
        'db' => array(
            //不在事务中的查询类型使用读数据库, 其它使用写数据库
            'write' => array(单配或混合配置结构),
            'read'  => array(单配或混合配置结构),
        ),
        ...
    )

多库连接配置

    <?php
    return array(
        ...
        //数据库连接池
        'db' => array(
            //'default'为默认连接源
            'default'      => array(以上单连接池写法),
            '非默认连接池' => array(以上单连接池写法),
            ...
        ),
        ...
    )
<?php
/**
 * 在系统根目录创建 /test.php 文件
 */
require dirname(__FILE__) . '/include/of/of.php';

//使用default连接池 打印结果集 array(array('a' => '1'));
print_r(L::sql('SELECT 1 a'));

//使用test连接池 打印结果集 array(array('b' => '2'));
print_r(L::sql('SELECT 2 b', 'test'));