新一代轻量级 PHP 扩展框架 Asf

2018-05-12 01:41:28 +08:00
 fanjiapeng

一、Asf 是什么?

全称 API Services Framework, 用 C 语言编写的轻量级 PHP 扩展框架, 专注于 API 开发。

二、解决了什么问题?

三、有哪些优点呢?

四、流程图

五、性能

5.1 总结

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';
    }
}

八、在 Nginx/Apache/Lighttpd 中运行

http://www.your-domain.com

8.1 输出结果

{
    "errno": 0,
    "data": "Hello World"
}

九、License

Asf is open source software under the PHP License v3.01

5298 次点击
所在节点    PHP
27 条回复
fanjiapeng
2018-05-12 01:46:54 +08:00
请大家多多支持,如有疑问,请留言。
openplatform
2018-05-12 07:38:41 +08:00
@fanjiapeng github 地址?
fanjiapeng
2018-05-12 08:26:37 +08:00
MeteorCat
2018-05-12 08:28:01 +08:00
其实应该和 yaf 和 phalcon 对比,C 扩展和传统框架对比.......
fanjiapeng
2018-05-12 08:37:03 +08:00
@MeteorCat 大家都是各有优点的哟。单纯就从 QPS 来讲的话,Asf 毫不逊色的哟。
zythum
2018-05-12 08:44:21 +08:00
@fanjiapeng 横向对比 yaf 呢。能做一下么。如果只是 QPS 毫不逊色的话,没有采用的理由
askfilm
2018-05-12 09:16:33 +08:00
虽然又是轮子, 自已当做学习还是很不错的! 上生产谁敢用你的东西呢,
框架这个东西最初的意图不是追求快, 而是追求高效开发的。 同时框架也是讲究灵魂思想的, 比如 : tp(上手快,门槛底), laravel (有不少黑魔法),symfony(组件化,标准化思想), 你的好像并没有多少特点
allenhu
2018-05-12 09:47:23 +08:00
二、解决了什么问题?
好像前面几个都不是能依靠用某个框架解决的
qloog
2018-05-12 09:49:13 +08:00
强烈支持下,已 star
Quarter
2018-05-12 10:43:51 +08:00
已 Star,有空研究,哈哈哈
KgM4gLtF0shViDH3
2018-05-12 10:47:04 +08:00
支持支持。做贡献的人都很伟大
gouchaoer
2018-05-12 10:59:21 +08:00
asf 和 yaf 有啥改进呢?
另外运行在 fpm 模式下始终有一个问题困扰的 phper 就是阻塞 io 问题,如果业务中只是单纯连接数据库 /缓存之类的还好,如果是 rpc 调用一些 io 时间比较长的服务就会导致 qps 很差,不知道你对此有何看法
sagaxu
2018-05-12 13:18:51 +08:00
@gouchaoer asf 和 yaf 是过去,swoole+协程是未来
tongz
2018-05-12 13:23:47 +08:00
标题还以为 steam 那个 asf。。。支持支持~
fanjiapeng
2018-05-12 16:11:41 +08:00
@zythum Asf 宗旨就是上面提到的第二大点。Asf 也不是凭空憋一个大招出来的哟,它结合了公司级框架的优点,持续 1 年的迭代与创新。在第三大点里,列出了 Asf 优秀的,出色的功能,赶快去用用吧。Asf 相信你用上它,就会爱上它。
fanjiapeng
2018-05-12 16:26:11 +08:00
@askfilm
以生产手机来举例,新品牌的手机 V1 刚上市的时候,购物者要么是冲着 BOSS 名声购买的,要么是进行市场比货觉得物有所值才购买的。下半年此厂商又生产了 V2, 虽然都是手机, 但功能, 配置, 或者说某些手机操作都变了哟。
fanjiapeng
2018-05-12 19:49:38 +08:00
@gouchaoer 关于 RPC 调用 IO 耗时长的问题,这个问题需要多面考量的。如及时性的合理考量?开发周期、资金成本、可维护性的考量? Server 端处理这个事件本来就很慢?同步异步合理选择?解决方案是否可以多面性?如果把范围缩小到一个点,只想解决在 PHP-FPM 下关于阻塞 IO 的问题,其它条件先放放。那么我推荐你看看韩老师的 Swoole
fanjiapeng
2018-05-12 19:56:51 +08:00
@sagaxu 不同的产品应该有不同的使用场景,伟大的工程师在解决方案上往往都会有多方面的考量。一个好产品的存在都必然是真实需求产生的。万金油还是很难找的哟。
dobelee
2018-05-12 20:00:50 +08:00
mark。回去体验一下。
usedname
2018-05-12 20:06:20 +08:00
Asf_Application 还再用 PSR-0,看着就难受 。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/454212

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX