1.1、性能对比
使用apache bench工具对Nginx静态页、Golang Http程序、PHP7+Swoole Http程序进行压力测试。在同一台机器上,进行并发100用户,共100万次Http请求的基准测试中,QPS对比如下:
QPS(每秒的响应请求数,也即是最大吞吐能力)数值越大,WEB性能越好.
1.2、构建web服务器
Swoole1.7.7版本增加了内置Http服务器的支持,通过几行代码即可写出一个异步非阻塞多进程的Http服务器。 Http类的模块是继承了Server类
$http = new Swoole\Http\Server("127.0.0.1", 9501);
// 接受客户端请求事件
$http->on('request', function(swoole_http_request $request, swoole_http_response $response) {
// 发送到客户端浏览器
$response->end("<h1>hello swoole</h1>");
});
$http->start();
// 参数说明
$request,Http请求信息对象,包含了header/get/post/cookie/rawContent[put/delete]等相关信息
$response,Http响应对象,支持cookie/header/status等Http操作
访问:浏览器访问 记得放行端口,否则无法访问
杀死进程
通过ab压测
yum install httpd-tools
压测
ab -n 800 -c 800 -k http://118.25.155.180:6060/ -c 并发的人数 -n 总的请求次数 -k 保持连接
1.3、静态服务器
# 静态资源配置选项
'document_root' => './home/', // v4.4.0以下版本, 此处必须为绝对路径 'enable_static_handler' => true, 注:document_root选项一定要注册静态资源请求的时路径来设置
静态的文件
运行效果
1.4、动态服务器
高性能的动态解析PHP的服务器
$http->on('request', function ($request, $response) { $req_file= $request->server['request_uri'];//获取客户端数据 if($req_file!="/favicon.ico"){ $filepath=__DIR__.'/home'.$req_file;//拼接路径 echo $filepath; if(file_exists($filepath)){//判断文件是否存在 ob_start();//开启缓冲区 include_once $filepath;//引入文件 $html=ob_get_contents();//得到缓冲区的内容 ob_clean();//清空缓冲区 $state=200; }else{ $state=404;//定义状态码 $html=json_encode(['code'=>1,'data'=>"",'msg'=>'没有该页面'],256); } } $response->status($state); $response->header("Content-Type",'text/html;charset=utf-8'); $response->end($html); });
页面PHP文件
封装$_get $_post $_files数据的获取
成功的秘诀,在永不改变既定的目的~