myphps / my
myphp框架
1.0.15
2026-04-03 09:06 UTC
Requires
- myphps/my-php-srv: ^4.0
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):
支持 http、websocket、tcp、udp 类型,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