SpeedPHP/大规模系统部署

来自站长百科
跳转至: 导航、​ 搜索

SpeedPHP | 快速入门 | 访问交互 | 数据操作 | 框架概述 | 模板引擎 | 优化加速 | 开发指南 | 数据模型 | API参考

本条目将讲述如何构架一个适合大规模应用程序的目录结构,以及应用目录的合理性建议。

请注意,如果是小型应用程序,使用SpeedPHP默认的controller / model等几个目录结构即可,这里讲述的是针对较大规模应用程序的部署。

大规模部署SP框架的目录结构建议[ ]

首先我们来看一下本文将解决哪些问题:

  • sp框架能否支持modules(模块)式的开发? 支持
  • sp框架如何部署成多入口的应用程序?
  • 如何共用类库?
  • 如何放置各种页面模板?
  • 各应用程序(模块)如何共用同一配置信息?
  • sp框架能放在任何目录下使用吗? 可以
  • 媒体文件(图片、样式、JS脚本)如何放置比较合理?
  • 目录安全性建议?

实例下载:http://speedphp.com/cms/uploads/release-dirs.zip

截图:

Speedphp release-dirs.gif

下面介绍各目录和文件的作用。

config.php[ ]

config.php文件是全站通用配置文件,config.php的作用包括:

  • 定义APP_PATH和SP_PATH常量,由于config.php文件的位置在应用程序主目录,所以config.php可以替代入口文件来定义这两个常量。
  • 对应用程序进行部分设置,比如时区设置。
  • 载入其他库类文件,比如载入用户自定义的函数文件(本例中是lib/functions.php文件)
  • 定义全站通用配置,如数据库定义,模板引擎定义等,也就是$spConfig的定义。这里要注意本例中相关的多个路径配置已被改变,如model目录的被定义成了“APP_PATH.'/lib'”。

index.php admin.php member.php produce.php[ ]

各模块(模块也是:modules / 子系统 / 应用程序,以下都以模块为统称)的入口文件,每个入口文件均可以代表一个模块,在各个入口文件中,还可以定义以下内容:

  • 首先必须载入config.php文件
  • 定义本模块的controller(控制器)路径,如admin.php中对controller路径的定义为“$spConfig['controller_path'] = APP_PATH.'/modules/'.basename(__FILE__,".php");”,该语言可以自动获取到入口文件的名称,并设置该模块的控制器目录与入口文件名称一致。也就是说,admin.php入口文件对应的控制器文件目录就是 APP_PATH / modules / admin 目录。
  • 载入SpeedPHP,开始执行程序。

lib目录[ ]

放置网站共用的类库文件,类库文件包括数据库模型类(spModel的派生类),操作类,第三方类库以及用户自定义函数等,由于这些类库在各个模块都会被用到,所以放置到独立的目录中,方便管理和重用。

Speedphp release-dirs1.gif

modules目录[ ]

相等于普通SpeedPHP应用程序的controller(控制器)目录,但是由于各个入口文件均有不同不配置,所以modules目录下还将分成与各入口文件名称相同的目录,分别存放各模块的控制器文件。

Speedphp release-dirs2.gif

template目录[ ]

放置html模板文件,template目录下可以按各模块的不同,分成不同的子目录来存放各模块的HTML模板文件。

这些模板当中,类似头部文件(header.html),底部文件(footer.html)等可以通用的模板文件,可以直接放在template目录目录下,让各HTML模板可以简单地引用。

请注意,在各个控制器中输出HTML模板的时候,要加上模板目录的名称:

function index(){ // 这里是首页
	$this->contents = "产品模块首页内容";
	$this->display("produce/main_index.html");
}

themes目录[ ]

放置图片、样式、JS脚本文件(统称媒体文件),这些文件可以根据使用的范围不同,而再进行分子目录,比如前台的媒体文件放到 template / index目录中,后台的媒体文件放置到 template / admin 目录中。

当然,这些媒体文件,也可以用其他方式存放,比如统一放到根目录的images下面,再在images下分开子目录。

无论如何放置,媒体文件放置的要点就是:将媒体文件与PHP、HTML模板都要分开,使得媒体文件可以独立管理,独立使用。

Speedphp release-dirs3.gif

tmp目录[ ]

临时文件目录

uploads目录[ ]

放置上传的文件的目录,对该目录的建议有:

  • 上传文件最好按“年-月”作为目录形式来放置,如果每日上传量比较大,可以用“年-月-日”的目录形式来放置,最终要保证同一目录下文件不能太多,建议值是不要超过1024个文件。
  • 可上传文件要进行限制,建议仅能上传图片,压缩包等,以保证系统安全。

参考来源[ ]

http://speedphp.com/manual.html

SpeedPHP使用手册导航

快速入门

开始使用SpeedPHP | 制作留言本 | 简便的数据表操作 | 用Smarty来显示页面

访问交互

入口文件 | 控制器架构 | 网址生成与PATH_INFO | 获取提交数据 | URLRewrite伪静态 | 自定义伪静态URL | 几种跳转 | 多语言实现 | 权限控制 | session、cookie | Ajax应用

数据操作

编写数据模型类 | 常规操作CRUD | 安全过滤 | 简化操作spDB | 数据变量存储 | 缓存配置

框架概述

单入口应用程序 | 架构设计 | 第三方类库及扩展功能 | UTF8编码与GBK版本 | SAE云计算版

模板引擎

模板引擎配置 | 使用Smarty | Smarty开发教程 | 自动显示模板| speedy教程 | 为什么使用模板其常见问题 | 模板包含文件 | 注册函数 | 全局变量赋值 | CSS和JS的路径

优化加速

生成静态HTML概述 | 生成HTML的使用 | 分页 | 高效函数缓存器| 模板引擎缓存

开发指南

核心函数 | 格式输出变量调试dump | 载入包含文件import | 类实例化函数spClass | 开发流程 | 目录结构、路径设置 | 大规模系统部署 | 用户自定义及全局操作 | 自定义函数库 | 自定义类库 | 自定义404页面 | 程序调试dump变量调试安全建议及命名建议

数据模型

高级数据库操作 | 数据表一对一关联 | 数据表一对多关联 | 数据表多对多关联 | 一表关联多表 | 关联结果的条件限制 | 关联结果在Smarty模板中显示 | 多数据库、数据表 | 多种类型数据库的配置 | 重写CRUD操作| 业务数据封装 | 数据函数复合调用

API参考

spModel数据库操作类 | spPager分页类 | spVerifier数据验证类 | spCache函数数据缓存类 | spLinker数据表关联实现类 | spView视图类 | spHtml静态HTML生成类 | spController控制器类 | spArgs环境参数类 | 配置 | 数据库驱动类 | 模板驱动类 | import载入文件