框架部署
测试部署
- 部署一个php >= 5.2的网络环境, 若需Swoole环境另见
- 下载框架代码 https://github.com/tolizhan/oFrame/ 或 https://gitee.com/tolizhan/oFrame/
- 解压到任意可访问的路径 Linux下 创建 /data 文件, 给 -R 可读写权限
- 访问框架根目录, 显示界面并且没有红色报错便部署成功
正式部署
- 打开框架配置/include/of/config.php
- 修改config键值为null 目的是删除 demo 对框架的重写
- 修改debug键值, 生产环境一定要改为"字符串"密码, 防止生产环境敏感信息泄漏, 带密码访问控制台
- 修改db键值连接一个数据库
- 根据实际需求开关 preloaded 中对应的模块
- 删除/demo文件夹
- 若为分布式架构, 将各节点/data文件夹挂载到同一个目录
- 如没特殊需求, 以下三项可忽略
- 框架可放在任意路径下,也可以改名,这里我们确定在"/include/of"
- 修改配置ofDir为"/include/of", 修改rootDir键值为strtr(substr(__FILE__, 0, -22), '\\', '/') 目的是定义磁盘根路径到 "/include/of"
- 修改rootUrl键值 若rootDir为挂载路径, 将导致rootUrl自动计算出错, 此时需要指定
系统访问
- URL格式可以通过系统入口定制
如: /index.php?c=控制类&a=方法名 或 /index.php/控制类/方法名 等
- 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']值
框架升级
-
用新版框架替换旧版不包含配置的全部文件
(注意删除新版中不存在的文件)
- 查看旧版到新版本号的变更日志 changelog.txt
- 按照日志中"-"开头的变化从低到高版升级当前系统
入口文件
/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'));