Skip to content

wukezhan/air

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

air framework

一款使用 C 语言写成的、现代的高性能轻量级PHP web框架。

####see README_en.md for english introduction.

特性

1. 高性能、轻量级

  • 在各PHP框架的基准压力测试中,air framework 在并发请求数、CPU及内存资源占用等各方面指标上均以显著优势大幅领先于其他框架
  • 更针对实际业务中最耗时的IO场景做特别的异步并发优化

2. 独家首创的全局异步并发模式

  • 基于独创的 RWS 异步并发模式
  • 多种IO同时并发,全局异步统一调度
  • 支持以顺序、自然的同步风格书写异步、并发的代码逻辑
  • 已支持MySQL、curl两大主要IO场景,理论上可支持任意类型IO的并发执行

3. 极简高效的代码运行组织机制

  • 设计良好的 MVC 机制,轻松处理前端请求与后端任务
  • 基于正则的路由机制,高效满足各种刁钻路由需求
  • 基于命名空间的自动加载,最大化提升类库加载效率
  • 天然无限制扩展特性,air framework 始终以轻量高效为基本原则,拒绝冗长庞杂和面面俱到,只提供最基本、最核心底层机制,不会预置任何诸如表单验证之类的具体业务功能实现,而是强烈建议、鼓励开发者基于自身特点选用最适合自己的解决方案

全局的异步并发模式

在以下的场景中,每个数据库请求和curl请求都将需要1秒的等待时间,如果完全使用传统同步阻塞方案,完成全部将总共需要6秒的时间。

使用普通的PHP原生异步解决方案时,MySQL和curl将各需要1秒等待时间,此时完成全部请求将总共需要2秒时间,可3倍的提升响应速度。

但使用 air framework 的全局异步并发模式,完成全部的6个请求将总共只需要1秒等待时间,轻而易举即可取得6倍的响应性能提升。

<?php
/**
 * air\config::path_get('mysql.config.air');
 * @see https://github.com/wukezhan/air/blob/master/tests/003.curl.phpt
 * @see https://github.com/wukezhan/air/blob/master/tests/mysql.inc.php
 * @see https://github.com/wukezhan/air/blob/master/tests/004.mysql.phpt
 */
define('URL', 'http://localhost/test/sleep');
$time = microtime(1);
$t = 1;
// each request below will use 1 second
$m1 = new mysql(DB_CONF);
$m1->async()->query("select sleep({$t}) as a");
$m2 = new mysql(DB_CONF);
$m2->async()->query("select sleep({$t}) as b");
$m3 = new mysql(DB_CONF);
$m3->async()->query("select sleep({$t}) as b");
$c1 = new curl();
$c1->async()->get(URL , ['sleep' => $t]);
$c2 = new curl();
$c2->async()->get(URL , ['sleep' => $t]);
$c3 = new curl();
$c3->async()->get(URL , ['sleep' => $t]);

var_dump($c3->data());
var_dump($c1->data());
var_dump($c2->data());
var_dump($m1->data());
var_dump($m2->data());
var_dump($m3->data());
echo "time used: ", microtime(1)-$time,"s\n";
// this will totally use 1 second but not 6 seconds

文档及实例

安装及使用

环境要求

  • Linux
  • PHP 5.4+
    • mysqlnd
    • mysqli
    • curl
  • PHP 7.0.0+
# configure options
./configure --prefix=/path/to/php --enable-mysqlnd --with-mysqli --with-curl

安装使用

  • 一键体验

对于 docker 用户,可以通过以下命令一键体验 air framework

# php5
docker run -it -p 2355:80 --name=airstack5 wukezhan/airstack5
# visit
curl http://localhost:2355/
# or
curl http://localhost:2355/hello/world

#php7
docker run -it -p 2357:80 --name=airstack7 wukezhan/airstack7
# visit
curl http://localhost:2357/
# or
curl http://localhost:2357/hello/world
  • 从源码安装
# 1. 准备源码
## 下载并解压缩源码包
### php5
https://github.com/wukezhan/air/archive/master.zip
### php7
https://github.com/wukezhan/air/archive/php7.zip
### 或从源码克隆
git clone https://github.com/wukezhan/air

cd air
# 对于克隆源码,可执行以下命令切换到 php7 分支
git checkout php7

# 2. 编译安装
/path/to/php/bin/phpize
./configure --with-php-config=/path/to/php/bin/php-config
make && make install
make test

# 3. 修改配置
vim /path/to/php/lib/php.ini
增加以下配置:
extension = air.so

更多

对本项目感兴趣的朋友,可以关注微博 weibo.com/wukezhan 或通过以下方式进行交流: