myphp框架

Maintainers

Package info

github.com/ncwsky/my

Type:project

pkg:composer/myphps/my

Statistics

Installs: 30

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.15 2026-04-03 09:06 UTC

This package is auto-updated.

Last update: 2026-04-03 09:06:41 UTC


README

轻量级 PHP 框架,支持 Workerman / Swoole 常驻内存运行,适用于 Web 应用与 CLI 脚本开发。

环境要求

  • PHP >= 8.1
  • Composer
  • 可选:Workerman(默认)或 Swoole 扩展

安装

composer create-project myphps/my

项目结构

├── app/              # 应用目录(控制器、模型、视图、配置)
│   ├── control/      # 控制器
│   ├── model/        # 模型
│   ├── view/         # 视图模板
│   ├── lang/         # 多语言
│   └── config.php    # 应用配置(含权限认证配置)
├── common/           # 公共库(中间件、工具类)
├── web/              # Web 入口及静态资源
├── dist/             # 打包输出目录
├── build/            # 可执行文件构建输出
├── log/              # 日志目录
├── runtime/          # 运行时临时目录
├── conf.php          # 全局配置(数据库、Redis、中间件等)
├── conf.local.php    # 本地配置覆盖(不提交到仓库)
├── app.conf.php      # 服务配置(端口、进程数等)
├── app.conf.local.php # 本地服务配置覆盖
├── app.php           # 常驻内存服务入口
├── cli.php           # CLI 脚本入口(Model生成、Phar打包、队列等)
├── my                # CLI 模式下请求执行入口(Linux/macOS)
├── my.bat            # CLI 模式下请求执行入口(Windows)
└── composer.json

快速开始

创建应用

# 初始化默认应用
php my --init

# 初始化指定应用目录
php my --run=应用目录名 --init

生成数据表 Model

# 生成所有表的 Model
php cli.php Model 1 "common\model" "\common\CommonModel"

# 生成指定表的 Model
php cli.php Model 表名 "common\model" "\common\CommonModel"

# 生成多张表(逗号分隔)
php cli.php Model "table1,table2" "common\model" "\common\CommonModel"

参数说明:

  • 参数1:表名(1 表示全部表,支持逗号分隔多表)
  • 参数2:命名空间(默认 common\model
  • 参数3:基类(默认 \myphp\Model
  • 参数4:数据库配置名(默认 db

可创建 .table-ignore 文件,每行一个表名,用于全库生成时忽略指定表。

CLI 执行请求

# 执行控制器方法
php my [--run=应用目录] [模块/]控制器/方法 ["参数1=值1&参数2=值2"]

常驻内存运行

支持 Workerman(默认)和 Swoole 两种运行模式:

# 默认 Workerman 运行
php app.php

# 指定参数运行
php app.php -p 6051 -c 8

# Swoole 模式运行
php app.php -s

# 调试模式运行
php app.php --console

# 重启 / 平滑重载 / 停止
php app.php restart
php app.php reload
php app.php stop

启动参数:

参数 长参数 说明 示例
-h --help 显示帮助
-l --listen 监听 IP -l 0.0.0.0
-p --port 监听端口 -p 6051
-c --count 进程数量 -c 8
-n --name 进程名 -n myApp
-u --user 运行用户 -u www-data
-s --swoole Swoole 模式

服务类型配置app.conf.php):

支持 httpwebsockettcpudp 类型,Swoole 的 websocket 同时支持 HTTP 请求。

队列处理

基于 Redis 的简易异步队列,支持延迟入列:

# 手动执行队列
php cli.php Queue

# 配合 crontab 定时执行(每分钟启动,内部按间隔循环60秒)
# queue.sh 参数:操作名 间隔秒数(默认2) 最大并发进程数(默认5)
* * * * * cd /项目路径 && /usr/bin/sh ./queue.sh Queue 2
* * * * * cd /项目路径 && /usr/bin/sh ./queue.sh ClearTmp

Windows 环境可使用 php cmd.php 替代 crontab 进行队列处理。

打包部署

生成 Phar 包

# 生成 phar 文件到 dist/ 目录
php cli.php phar

# 如提示 phar.readonly 限制,使用:
php -d phar.readonly=0 cli.php phar

# 运行 phar
php my.phar

打包后 dist/ 目录包含完整的可部署文件(phar、配置模板、入口文件等)。

生成可执行文件

使用 phpacker 将 phar 打包为独立可执行文件,支持 Linux / macOS / Windows 跨平台构建:

# 构建(默认 PHP 8.4)
phpacker build

# 指定 PHP 版本
phpacker build --php=8.2

# 使用 upx 压缩体积
upx build/my

配置说明

全局配置 conf.php

$cfg = [
    'db' => [...],          // 数据库连接(支持 mysql/sqlite/pgsql/mssql/oracle)
    'redis' => [...],       // Redis 连接
    'log_dir' => '...',     // 日志目录
    'log_level' => 0,       // 日志级别 0-5
    'encode_key' => '...',  // 数据编码密钥
    'jwt_key' => '...',     // JWT 密钥
    'middleware' => [...],   // 中间件配置
    'url_maps' => [...],    // URL 映射
    'module_maps' => [...], // 模块映射
];

敏感配置请放在 conf.local.php 中覆盖,避免提交到版本库。

服务配置 app.conf.php

return [
    'name' => 'myApp',     // 服务名
    'ip' => '0.0.0.0',     // 监听地址
    'port' => 6051,        // 监听端口
    'type' => 'http',      // 类型:http/websocket/tcp/udp
    'setting' => [
        'count' => 8,      // 进程数(建议 CPU 核数 × 1~4)
        'static_path' => '',  // 静态文件目录(Workerman)
    ],
];

Web 传统模式

除常驻内存外,也支持 Nginx/Apache 传统方式运行,将 web/ 设为网站根目录即可:

server {
    listen 80;
    root /项目路径/web;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

常用扩展包

# 二维码
composer require endroid/qr-code

# JWT
composer require firebase/php-jwt

# Excel
composer require box/spout
composer require myphps/phpexcel

# 微信
composer require overtrue/wechat:~5.0
composer require symfony/cache-contracts:2.5.0

代码质量

# 安装工具
composer require --dev phpstan/phpstan
composer require --dev friendsofphp/php-cs-fixer

# 代码格式化
php-cs-fixer fix --config=./.php-cs-fixer.dist.php

# 静态分析
phpstan analyse -c ./phpstan.neon.dist --memory-limit 1G

许可证

MIT