MixPHP 开荒 API 接口简单实例

2020-02-07 08:44栏目:龙竞技官网
TAG:

MixPHP 是一款基于 Swoole 的常驻内存型 PHP 高性能框架,框架的高性能特点非常适合开发 API 接口,而且 MixPHP 非常接近传统 MVC 框架,所以开发接口时非常简单。

MixPHP 是一款基于 Swoole 的常驻内存型 PHP 高性能框架。

MixPHP 是一个基于 Swoole 的高性能框架,CodeIgniter 是一个元老级的轻量级框架,Yii 是一个非常流行的框架,以下是三个框架的对比。

下面做一个开发 API 接口的简单实例:

MixPHP 同时支持多种环境中执行:

由于 Yii/CodeIgniter 是基于 Apache/PHP-FPM 的传统框架,如果使用 MixPHP 的正常 Swoole 部署方式来对比,显得有些不公平,由于 MixPHP 同时支持在 Apache/PHP-FPM 中运行,所以此次测试的 MixPHP 是部署在 Apache 之中。

articles 表,通过 id 获取一篇文章。

  • Nginx + mix-httpd (使用到 Swoole,性能超强)
  • Apache (未使用 Swoole)
  • Nginx + php-fpm (未使用 Swoole)

虚拟机: 4 核,1G使用 ab 工具压测,命令:ab -n 5000 -c 100 URL

访问该接口的 URL:

以上多种环境中,后面两种都是传统 MVC 框架最常用的部署方式,MixPHP 同时也支持该种方式,但是该种方式无法使用到 Swoole 特性,只是为了方便开发而使用的

Yii 关闭了 debug,并设置为 pro 环境。

http://www.e.com/articles/details?id=1

MixPHP 在多种环境中迁移,代码无需修改,是无缝迁移的。

默认控制器代码如下,输出一个 Hello World。

数据库表结构如下:

由于大部分用户开发是在 Windows 中进行,因此 开发阶段 我们推荐使用 Apache 部署方案,因为更简单快速,下面整体演示一下 MixPHP 的 Apache 环境搭建。

<?phppublic function actionIndex(){ return 'Hello World';}
CREATE TABLE `articles` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `title` varchar NOT NULL, `content` varchar NOT NULL, `dateline` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY  ENGINE=InnoDB DEFAULT CHARSET=utf8;

去官网下载 win 版本的 Apache,官网链接中给出了 5 个站点可下载,选择其中一个即可。

默认控制器代码如下,输出一个 Hello World。

修改数据库配置文件,MixPHP 的应用配置文件中,关于数据库的信息都引用了 common/config/database.php 文件。

http://httpd.apache.org/docs/current/platform/windows.html#down
<?phppublic function index(){ echo 'Hello World';}

图片 1图片1

注意:网页中有 VC** 等版本,注意该版本代表 Visual C++ 的编译库的版本号,这里的版本号要与 PHP 的版本号一至。

默认控制器代码如下,输出一个 Hello World。

修改应用配置文件:

  1. 解压至指定安装目录。
public function actionIndex(){ return 'Hello World';}
  • 修改 Response 组件默认输出格式为 JSON 格式。
  • 修改 404/500 错误输出格式为 JSON 格式。

图片 2图1

  1. 测试 Yii,QPS: 56.40

图片 3图片2

  1. 使用CMD安装为系统服务。

框架默认的 404/500 响应是网页,而 API 服务需要响应 JSON 数据,通常其他传统 MVC 框架需要修改很多地方才可完成这个需求,MixPHP 本身就提供该种配置,只需修改一下配置即可。

使用下面命令将 Apache 安装为系统服务,启动 CMD 窗口需 “以管理员权限运行”。

C:Serverapache24vc11bin>ab -n 5000 -c 100 http://www.b.com/This is ApacheBench, Version 2.3 <$Revision: 1757674 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking www.b.com (be patient)Completed 500 requestsCompleted 1000 requestsCompleted 1500 requestsCompleted 2000 requestsCompleted 2500 requestsCompleted 3000 requestsCompleted 3500 requestsCompleted 4000 requestsCompleted 4500 requestsCompleted 5000 requestsFinished 5000 requestsServer Software: Apache/2.2.32Server Hostname: www.b.comServer Port: 80Document Path: /Document Length: 9 bytesConcurrency Level: 100Time taken for tests: 88.659 secondsComplete requests: 5000Failed requests: 0Total transferred: 1080000 bytesHTML transferred: 45000 bytesRequests per second: 56.40 [#/sec] Time per request: 1773.170 [ms] Time per request: 17.732 [ms] (mean, across all concurrent requests)Transfer rate: 11.90 [Kbytes/sec] receivedConnection Times  min mean[+/-sd] median maxConnect: 0 0 1.0 1 29Processing: 14 1765 4200.5 688 48084Waiting: 14 1610 3741.9 682 46690Total: 14 1766 4200.5 688 48084WARNING: The median and mean for the initial connection time are not within a normal deviation These results are probably not that reliable.Percentage of the requests served within a certain time  50% 688 66% 1087 75% 1400 80% 1657 90% 3029 95% 7665 98% 14760 99% 24300 100% 48084 (longest request)

版权声明:本文由龙竞技官网发布于龙竞技官网,转载请注明出处:MixPHP 开荒 API 接口简单实例