zhanshop / framework
张启全研发的PHP框架
v6
2025-03-20 07:25 UTC
Requires
- php: >=8.2
This package is not auto-updated.
Last update: 2025-06-26 08:46:35 UTC
README
简介
zhanshop-php 是一个基于swoole高性能轻量级框架、全程非阻塞、凭借swoole底层将php阻塞函数重写进行协程非阻塞化和php自身低开销特点爆发强劲的性能,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性, 一键快速生成业务逻辑层代码骨架,只需要编写业务逻辑代码即可,根据注释配置即可生成api文档,对PDO 和 redis连接池进行了封装,同一连接内事务支持,不同连接和不同数据库服务器之前的分布式事务等功能,全程APP容器化管理,数据库操作类和缓存操作类和thinkphp类似,简单易用。
完整项目
https://gitee.com/zhangqiquan_admin/zhanshop-php
server组成
- 业务层(包含控制器、service、model)
- crontab (定时任务进程,可将任务丢给task执行)
- task (task任务)
关于附件
目前附件是只传七牛云 修改 config/sns.php 相应配置
环境要求
php8.4 以上版本,需要redis扩展的支持, pdo mysql 扩展的支持,swoole6 以上的扩展支持
性能表现 (供参考和对比)
本框架http服务器,在我的(本机12核,32G ubuntu22 设备上)使用ab压力测试工具 吞吐量可达38万多/s
压测表现碾压如go语言的Gin框架、python语言的Tornado框架、java语言的Spring Boot等一众框架
目录结构
├─app 应用目录
│ ├─api
│ │ ├─admin 后台管理系统
│ │ ├─index api/前端页面
│ │ └─..... 其他
│ ├─console 应用层控制台程序
│ ├─constant 常量类的定义
│ ├─exception 协议异常自定义接收处理
│ ├─helper 助手函数类的目录
│ ├─schema 数据表字段配置(常用于后台智能表单智能列表的生成配置)
│ ├─process 自定义进程
│ ├─script 独立运行的php脚本文件
│ ├─crontab 定时任务目录
│ ├─model 模型目录
│ └─task task任务目录
│
├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─database.php 数据库配置
│ ├─elasticsearch.php elasticsearch配置
│ ├─middleware.php 中间件的配置 仅http协议下生效
│ ├─share.php 多进程共享表字段配置
│ ├─server.php server服务器配置
│ ├─sns.php 对接第三方系统配置参数
│ ├─ini.php ini配置
│ └─log.php 日志配置
├─route 路由定义目录
│ ├─index 路由定义文件
│ │ └─v1.php 注册的目录版本配置文件
│ ├─admin 路由定义文件
│ │ └─v1.php 注册的目录版本配置文件
│ └─ ...
│
├─public WEB前端访问目录
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
│ ├─Container.php 单例容器类
│ ├─App.php APP管理器
│ ├─Config.php 配置参数管理
│ ├─Console.php 控制台程序入口
│ ├─Cache.php redis缓存管理类
│ ├─Database.php 数据库操作管理入口类
│ ├─Helper.php 帮助函数
│ ├─Log.php 日志类
│ ├─Middleware.php 控制器中间件管理
│ ├─RequestCache.php 请求缓存【相当于nginx的程序内部缓存】
│ ├─Route.php 路由管理类
│ ├─Service.php service单例管理
│ ├─Task.php task任务管理
│ ├─Validate.php 请求参数验证
│ ├─console 控制台程序目录(包含http服务器,后台管理系统等程序)
│ └─ ...
├─.env.dev 本地开发环境变量示例文件
├─.env.test 测试环境变量示例文件
├─.env.production 生产环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─cmd.php 命令行入口文件
框架安装
composer require zhanshop/framework
控制台使用方法
php cmd.php
欢迎使用zhanshop控制台系统
用法: cmd 指令 --参数 参数信息
可用命令:
help 帮助 - 显示命令的帮助
server 启动服务器 - 使用该命令可以创建服务器应用
script 执行脚本 - 单独启动进程方式启动指定程序
phar phar打包 - 将vendor项目目录打包成phar并存放在项目中
api:route api注解生成路由 - 一键生成基于控制器配置的注解路由
配置开机启动脚本【运行在非容器环境下】
php cmd.php server poweron
容器环境下启动
cd docker
./start.sh
演习地址 【IPV6网络环境】
后台管理系统:
http://jia-old.shuangcloud.com:7201/admin/
账号: admin
密码: admin123
接口服务:
http://jia-old.shuangcloud.com:7200/apiDoc
账号:zhanshop
密码:123456
使用方法
1.数据模型
<?php
namespace app\model;
use zhanshop\database\Model;
class Abc extends Model
{
// 设置当前模型的对应数据表
protected $table = '对应的表名';
// 设置当前模型的数据库连接
protected $connection = '连接配置名称';
}
2.数据库模型使用案例
App::database()->model('表名')->where(['id' => 123])->find(); // 查询单个数据
App::database()->model('表名')->where(['a' => 123])->finder(); // 分页查询
App::database()->model('表名')->save([...]); // 新增数据
App::database()->model('表名')->where(['id' => 123])->delete(); // 删除
事务 当闭包中的代码发生异常会自动回滚
App::database()->transaction(function($pdo){
Test::insert([
'a' => '1',
'b' => '2',
'c' => '3'
], $pdo);
Test::insert([
'a1' => '1',
'b' => '2',
'c' => '3'
], $pdo);
});
分布式事务【在数据库开启分布式事务后才可以正常使用】
App::database()->transactionXa(function($pdos){
Test::insert([
'a' => '1',
'b' => '2',
'c' => '3'
], $pdo[0]);
Test1::insert([
'a' => '1',
'b' => '2',
'c' => '3'
], $pdo[1]);
});
3.缓存使用
App::cache()->get(...);
App::cache()->set(...);
更多方法详见 https://blog.csdn.net/demored/article/details/123842206 以及 php官方文档
等等....
交流群
由于微信群无法直接加入,故可先加下方二维码好友,并声明目的,再拉您入群。
微信号: eee7798