simplephp/minphp

基于 Swoole 的常驻内存高性能 PHP 框架(小而美)

dev-master 2019-04-04 08:27 UTC

This package is auto-updated.

Last update: 2024-04-28 23:03:05 UTC


README


minphp

高性能 • 轻量级 • 命令行

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f776e6c6f6164732d32396b2d677265656e2e737667 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6c696e757825323025374325323077696e2532302537432532306f73782d6c69676874677265792e737667 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73697a652d3136302532304b422d677265656e2e737667

minphp 是什么

minphp 秉承 "普及 PHP 常驻内存型解决方案,促进 PHP 往更后端发展" 的理念而创造,采用 Swoole 扩展作为底层引擎,围绕常驻内存的方式而设计,提供了 HTTP / WebSocket / Console 开发所需的众多开箱即用的组件,minphp 追求简单、实用主义,试图让更多开发者以更低的学习成本享受到 Swoole 带来的高性能与全新的编程体验。

与传统 MVC 框架比较

minphp 支持三种执行方式:传统模式(Apache/FPM)、常驻模式、协程模式,后两种模式具有传统框架无法比拟的性能优势。

常驻模式:与传统 PHP 框架非常不同,可以不需要 Web 服务器(Apache/PHP-FPM),框架自带基于 Swoole\Server 开发的 mix-httpd 高性能 HTTP 服务器,传统的 PHP 应用程序中脚本结束后,所有的对象在请求后都将销毁,而 mix-httpd 不同,框架组件对象常驻于内存,减少对象反复创建销毁的性能损失。

协程模式:开启协程后,一个进程可以并行执行 N 个请求,不会像常驻模式/传统模式那样阻塞进程,而每增加一个请求只需增加一些内存消耗,由于协程能并行处理,所以通常只需配置于 CPU 数量 1~2 倍左右的进程数即可,更少的进程带来更少的 CPU 线程切换,又减少很多性能损耗。

与其他基于 Swoole 的框架比较

框架非常轻量化,架构简单,源码可读性强,容易掌握与改造。

开发方式几乎与传统 MVC 框架完全一致,用户无需了解 Swoole 即可开始开发。

框架集成了众多开箱即用的组件,方便快速开发。

我们的开发文档可能是所有框架中最详细的,连使用场景都有写明。

唯一支持传统模式(Apache/FPM)、常驻模式、协程模式三种模式的框架,用户可渐进式学习,选择适合自己团队的模式。

采用 Swoole 原生协程与最新的 PHP Stream 一键协程化技术。

框架定位

在其他 Swoole 框架都定位于大中型团队、庞大的 PHP 应用集群的时候,minphp 决定推动这项技术的普及,我们定位于众多的中小型企业、创业型公司,我们将 Swoole 的复杂度封装起来,用简单的编码方式呈现给用户,让更多的中级程序员也可打造高并发系统,让 Swoole 不再只是高级程序员的专利。

核心特征

  • 高性能:极简架构 + Swoole引擎,超过 Phalcon 这类 C 扩展框架的性能;
  • 服务器:框架自带 min-httpd 替代 Apache/PHP-FPM 作为高性能 HTTP 服务器;
  • 协程:采用 Swoole 原生协程与最新的 PHP Stream 一键协程化技术。
  • 连接池:通用的连接池组件,PDO/Redis 等组件默认接入连接池。
  • WebSocket:具备长连接开发能力,扩展了 PHP 开发领域;
  • 多进程:简易的多进程命令行开发,充分利用多核性能,可处理大量数据;
  • 长连接:按进程保持的长连接,支持 Mysql/Redis;
  • 命令行:封装了命令行开发基础设施,可快速开发定时任务、守护进程;
  • 组件:基于组件的框架结构,并集成了大量开箱即用的组件;
  • 中间件:AOP (面向切面编程),注册方便,能更好的对请求进行过滤和处理;
  • 门面:核心组件全部内置门面类,助力快速开发;
  • 路由:底层全正则实现,性能高,配置简单;
  • 验证器:集成了使用简单但功能强大的验证器,支持多场景控制;
  • 视图:使用 PHP 做模板引擎,支持布局、属性;
  • 自动加载:基于 PSR-4 ,完全使用 Composer 构建;
  • 模块化:支持 Composer ,可以很方便的使用第三方库;
  • 日志:基于 PSR-3 的日志组件。

性能测试

minphp 并发性能全面对比测试

开发文档

minphp开发指南:http://doc.minphp.cn

环境要求

  • PHP >= 7.0
  • Swoole >= 1.9.5 (常驻同步模式)
  • Swoole >= 4.2.1 (常驻协程模式)

快速开始

方法一:

推荐使用 composer 安装,但是一般情况下,composer 安装的是最新的稳定版本,不一定是最新版本。

composer create-project mixstart/minphp --prefer-dist

如果你需要安装实时更新的版本:

composer create-project mixstart/minphp=v1.1.1 --prefer-dist

如果提示错误,在 composer.json 增加 "minimum-stability": "**" 配置项,可用值为:devalphabetaRCstable,再执行:

composer update

方法二:

也可使用一键下载脚本,GitHub 有时下载很慢,命令行会报错,多试几次即可。

$> php -r "copy('https://raw.githubusercontent.com/mixstart/minphp/master/download.php', 'download.php');include 'download.php';"

安装入口:

入口文件安装至 /usr/local/bin,(可选,不安装可直接执行入口文件)。

$> cd /data/minphp-master
$> chmod 777 install.sh
$> ./install.sh

启动服务器:

接下来启动 mix-httpd 服务器。

$> mix-httpd service start -d

如果一切顺利,运行到最后你将看到如下的输出:

                           
   ____ ___    __  __     __  
  / __ `__ \  / / / /\   / / 
 / / / / / / / / / /\ \ / /
/_/ /_/ /_/ /_/ /_/  \_/_/
                     

Server      Name:      min-httpd
Framework   Version:   1.1.0-RC2
PHP         Version:   7.2.9
Swoole      Version:   4.2.1
Listen      Addr:      127.0.0.1
Listen      Port:      9501
Hot         Update:    disabled
Coroutine   Mode:      disabled
Config      File:      /data/apps/httpd/config/http_permanent.php

访问测试:

$> curl http://127.0.0.1:9501/
Hello World

下载

minphp 发行版本

License

Apache License Version 2.0, http://www.apache.org/licenses/