一、Asf 是什么?
全称 API Services Framework, 用C语言编写的高性能PHP框架, 工作变得很简单。
Asf 具有很多微创新, 属于新一代轻量级的MVC框架,内部称为DLS。
开源之路任重而道远, 我们共同砥砺前行,希望大家多多支持。
二、宗旨
- 把过去多行代码才能实现的功能, 简化成一行代码实现一个功能, 有效得减少了PHP代码量、错误率
- 优化重复代码, 提升项目开发效率, 开发者更应该把精力花在业务上(您是否经历过, 老板上午提需求, 下午就得对外发布)
- 最大化做到遵循PHP PSR规范
- 解决用户输入, 服务端输出的安全性问题
- 解决原生PHP框架严重消耗IO、内存、CPU的问题
三、特点
重要:稳如泰山,安如磐石。洞察异常,快人一步。
- 在快速定位问题、高效业务开发、大集群部署方面富有自己的魅力
- 999 特殊错误号, 拦截程序在runtime时的所有异常
- 提供 Asf_Sql_Log、Asf_Err_Log 机制记录接口运行时信息
- 提供实用的丰富的开发类库, 类随PHP进程启动就常驻内存
- 提供 Logger Buffer Cache , 文件描述符自动关闭机制
- 强大的 GPC 机制, 外部($_GET, $_POST, $_COOKIE)参数操作变得简单
- 提供配置文件常驻内存, 提升配置文件内容快速读取能力(详细说明)
四、优点
- 用C语言开发的PHP框架,只有少量的性能消耗
- 支持本地类库自动加载规则(library)
- 支持多种配置文件格式(INI, PHP, PHP Array)
- 支持多种路由协议, 默认使用RESTful路由模式, 提供方便的路由配置器
- 提供DB辅助函数(MySQL, Sqlite, Pgsql), 人性化Query Builder
- 遵循PHP PSR Standards, PHP Coding Standards
- 提供强大的条件判断机制(Asf_Ensure)
- 框架结构简单, PHP标准的扩展安装方式。框架执行速度更快, 更少的内存、CPU使用
- 框架无过度设计, 没有超厚的帮助手册, 也不用去学习一套新的编程语法
五、流程图
六、性能
6.1 总结
6.1.1 压测结论
没有挑取漂亮的数据, 或者配置一个为了压测的最优环境. 只是简单地采用以大部分web机器使用的环境进行测评。
这里只是给出了一种测试方法, 通过多次不同并发数测试结果得知, Asf 与原生 PHP 做比较, 性能消耗只有 6% ~ 15%。
6.1.2 业务开发速度结论
采用 Asf 框架开发业务, 代码量能节约 20% ~ 25%。假如项目开发需要4天 x 8小时, 能节约出整整1天 x 8小时的工作时间。
七、安装
7.1 环境要求
- PHP 7.0 +
- GCC 4.4.0+ (Recommended GCC 4.8+)
7.2 下载
git clone https://github.com/yulonghu/asf.git
7.3 在Linux/Unix/Mac下编译
$ /path/to/phpize
$ ./configure --with-php-config=/path/to/php-config
$ make && make install7.4 文档
八、开始使用
8.1 使用内置工具生成空项目
/php-bin-path/php /tools/asf_project.php /to-path/project_name
8.1.1 目录结构
+ public
| - index.php
+ config
| - config.php
+ library
+ modules
| - Bootstrap.php
| - Constants.php
+ api
|+ services
|- Index.php // Default service
|+ logics
|+ daos
8.1.2 config/config.php
<?php
$configs = array(
'asf' => array(
'root_path' => realpath(dirname(__FILE__)),
)
);
return $configs;8.1.3 public/index.php
<?php
define('APP_PATH', dirname(__DIR__));
$app = new Asf_Application(APP_PATH . '/config/config.php');
$app->run();8.1.4 Default service
<?php
class IndexService
{
public function indexAction()
{
return 'Hello World';
}
}九、在Nginx/Apache/Lighttpd中运行
9.1 输出结果
{
"errno": 0,
"data": "Hello World"
}十、License
Asf is open source software under the PHP License v3.01