全称 API Services Framework, 用 C 语言编写的轻量级 PHP 扩展框架, 专注于 API 开发。
5.1.1 压测结论
没有挑取漂亮的数据, 或者配置一个为了压测的最优环境. 只是简单地采用以大部分 web 机器使用的环境进行测评。
这里只是给出了一种测试方法, 通过多次不同并发数测试结果得知, Asf 与原生 PHP 性能消耗是 6% ~ 15%。
5.1.2 业务开发速度结论
采用 Asf 框架开发业务, 代码量能节约 20% ~ 25%。
假如项目开发需要 4 天 x 8 小时, 能节约出整整 1 天 x 8 小时的工作时间。
6.1 环境要求
PHP 7.0 +
GCC 4.4.0+ (Recommended GCC 4.8+)
6.2 下载
git clone https://github.com/yulonghu/asf.git
6.3 在 Linux/Unix/Mac 下编译
$ /path/to/phpize
$ ./configure --with-php-config=/path/to/php-config
$ make && make install
6.4 文档
http://www.box3.cn/phpasf/index.html
7.1 使用内置工具生成空项目
/php-bin-path/php /tools/asf_project.php /to-path/project_name
7.1.1 目录结构
+ public
| - index.php
+ config
| - config.php
+ library
+ modules
| - Bootstrap.php
| - Constants.php
+ api
|+ services
|- Index.php // Default service
|+ logics
|+ daos
7.1.2 config/config.php
<?php
$configs = array(
'asf' => array(
'root_path' => realpath(dirname(__FILE__)),
)
);
return $configs;
7.1.3 public/index.php
<?php
define('APP_PATH', dirname(__DIR__));
$app = new Asf_Application(APP_PATH . '/config/config.php');
$app->run();
7.1.4 Default service
<?php
class IndexService
{
public function indexAction()
{
return 'Hello World';
}
}
http://www.your-domain.com
8.1 输出结果
{
"errno": 0,
"data": "Hello World"
}
Asf is open source software under the PHP License v3.01
1
fanjiapeng OP 请大家多多支持,如有疑问,请留言。
|
2
openplatform 2018-05-12 07:38:41 +08:00
@fanjiapeng github 地址?
|
3
fanjiapeng OP |
4
MeteorCat 2018-05-12 08:28:01 +08:00 via Android
其实应该和 yaf 和 phalcon 对比,C 扩展和传统框架对比.......
|
5
fanjiapeng OP @MeteorCat 大家都是各有优点的哟。单纯就从 QPS 来讲的话,Asf 毫不逊色的哟。
|
6
zythum 2018-05-12 08:44:21 +08:00
@fanjiapeng 横向对比 yaf 呢。能做一下么。如果只是 QPS 毫不逊色的话,没有采用的理由
|
7
askfilm 2018-05-12 09:16:33 +08:00 1
虽然又是轮子, 自已当做学习还是很不错的! 上生产谁敢用你的东西呢,
框架这个东西最初的意图不是追求快, 而是追求高效开发的。 同时框架也是讲究灵魂思想的, 比如 : tp(上手快,门槛底), laravel (有不少黑魔法),symfony(组件化,标准化思想), 你的好像并没有多少特点 |
8
allenhu 2018-05-12 09:47:23 +08:00 via Android
二、解决了什么问题?
好像前面几个都不是能依靠用某个框架解决的 |
9
qloog 2018-05-12 09:49:13 +08:00
强烈支持下,已 star
|
10
Quarter 2018-05-12 10:43:51 +08:00 via iPhone
已 Star,有空研究,哈哈哈
|
11
KgM4gLtF0shViDH3 2018-05-12 10:47:04 +08:00
支持支持。做贡献的人都很伟大
|
12
gouchaoer 2018-05-12 10:59:21 +08:00
asf 和 yaf 有啥改进呢?
另外运行在 fpm 模式下始终有一个问题困扰的 phper 就是阻塞 io 问题,如果业务中只是单纯连接数据库 /缓存之类的还好,如果是 rpc 调用一些 io 时间比较长的服务就会导致 qps 很差,不知道你对此有何看法 |
14
tongz 2018-05-12 13:23:47 +08:00 via Android
标题还以为 steam 那个 asf。。。支持支持~
|
15
fanjiapeng OP @zythum Asf 宗旨就是上面提到的第二大点。Asf 也不是凭空憋一个大招出来的哟,它结合了公司级框架的优点,持续 1 年的迭代与创新。在第三大点里,列出了 Asf 优秀的,出色的功能,赶快去用用吧。Asf 相信你用上它,就会爱上它。
|
16
fanjiapeng OP @askfilm
以生产手机来举例,新品牌的手机 V1 刚上市的时候,购物者要么是冲着 BOSS 名声购买的,要么是进行市场比货觉得物有所值才购买的。下半年此厂商又生产了 V2, 虽然都是手机, 但功能, 配置, 或者说某些手机操作都变了哟。 |
17
fanjiapeng OP @gouchaoer 关于 RPC 调用 IO 耗时长的问题,这个问题需要多面考量的。如及时性的合理考量?开发周期、资金成本、可维护性的考量? Server 端处理这个事件本来就很慢?同步异步合理选择?解决方案是否可以多面性?如果把范围缩小到一个点,只想解决在 PHP-FPM 下关于阻塞 IO 的问题,其它条件先放放。那么我推荐你看看韩老师的 Swoole
|
18
fanjiapeng OP @sagaxu 不同的产品应该有不同的使用场景,伟大的工程师在解决方案上往往都会有多方面的考量。一个好产品的存在都必然是真实需求产生的。万金油还是很难找的哟。
|
19
dobelee 2018-05-12 20:00:50 +08:00 via Android
mark。回去体验一下。
|
20
usedname 2018-05-12 20:06:20 +08:00
Asf_Application 还再用 PSR-0,看着就难受 。。。
|
21
sagaxu 2018-05-12 22:23:55 +08:00
@fanjiapeng 伟大的工程师就那么几个。普通工程师们,掌握个几种应对不同场景的模式,每个模式下熟悉 1-2 款最主流产品,就等于有了万金油了。
|
22
cncqw 2018-05-12 23:40:42 +08:00
小框架坑太多不敢用
|
23
eve1yb0dy 2018-05-13 00:20:19 +08:00
努力下就成了 tsf
|
24
fanjiapeng OP @cncqw 虽然 Asf 在 GitHub 才放出来几天,但内部已经使用 1 年多了。框架的稳定性 Asf 是非常慎重的,Asf 有大量的各种测试 CASE 来保证, 也有详尽的文档来做开发导航。其中框架 API 测试 CASE 在源码 tests 目录里。开源之路任重而道远, Asf 欢迎你们来积极参与, 让我们一起来快乐成长, 我们相信小框架也会有大智慧。
|
25
whyiyhw 2018-05-13 01:40:41 +08:00 via Android
现在要做一个公司要做一个静态资源服务器,来管理放在不同目录下的 API 和 web 还有后台的资源。
核心功能就是读取路由,权限判定,映射目录,读取并返回文件,不同文件类型提供不同的文件处理方式。 我目前的想法是做个定时任务,每天拉昨天的文件到一个指定的目录,然后提供一个 web 服务,单独来处理资源请求。 web 服务我打算自己拼一个,现在就看好了路由,日志,orm 这几个组件。 出于对个人因素的考虑(没什么太拿的出手的作品),我这个 web 服务,怎么写会好一些? |
26
fanjiapeng OP @whyiyhw 从你当前的场景来分析的话,我个人觉得好的方案是选用市场上已有的 CDN 服务。如果说自己想研究 CDN 服务搭建,网上的文章已经不少了哟。我这里提出需要注意点: 页面与资源的发布方式,优化方式,缓存控制策略,机房的合理部署, 机房的带宽选择, 人力的投入。
|
27
hhxsv5 2018-05-18 10:51:45 +08:00
👍
建议支持常驻内存、异步 IO、协程这些特性。 |