当前位置: 首页 > news >正文

PHP轻量级高性能HTTP服务框架 - webman

摘要

webman 是一款基于 workerman 开发的高性能 HTTP 服务框架。webman 用于替代传统的 php-fpm 架构,提供超高性能可扩展的 HTTP 服务。你可以用 webman 开发网站,也可以开发 HTTP 接口或者微服务。

除此之外,webman 还支持自定义进程,可以做 workerman 能做的任何事情,例如 websocket 服务、物联网、游戏、TCP 服务、UDP 服务、unix socket 服务等等。

官网&文档:https://www.workerman.net/doc/webman/README.html

安装

PHP >= 7.2
Composer >= 2.0

composer create-project workerman/webman

运行

Windows 系统为例:

cd webman
php windows.php

在这里插入图片描述

运行后,在你的本地服务器 8787 端口就可以访问。

http://localhost:8787

在这里插入图片描述

代码结构

其结构仍然是 MVC 框架结构。

在这里插入图片描述

一个简单的示例

通过一个简单的 控制器+模型+数据库配置 来实现一个数据查询示例。

UserController.php

用户控制器:app\controller\UserController.php

<?php
namespace app\controller;use support\Request;
use app\model\User;class UserController
{public function getUser(Request $request){$default_uid = 29;$uid = $request->get('uid', $default_uid);$name = User::getUsernameByUid($uid); // 调用模型中的方法return json(['code' => 0, 'msg' => 'ok', 'name' => $name]);}
}

User.php

用户查询模型:app\model\User.php

<?phpnamespace app\model;use support\Db;class User
{public static function getUsernameByUid($uid){return Db::table('users')->where('uid', $uid)->value('username');}
}

数据库配置

webman 数据库默认采用的是 illuminate/database,也就是 laravel 的数据库,用法与 laravel 相同。先安装一下数据库:

composer require -W illuminate/database illuminate/pagination illuminate/events symfony/var-dumper

打开 config/database.php 配置数据库。

return [// 默认数据库'default' => 'mysql',// 各种数据库配置'connections' => ['mysql' => ['driver'      => 'mysql','host'        => '127.0.0.1','port'        => 3306,'database'    => 'test','username'    => 'root','password'    => '','unix_socket' => '','charset'     => 'utf8','collation'   => 'utf8_unicode_ci','prefix'      => '','strict'      => true,'engine'      => null,'options' => [\PDO::ATTR_TIMEOUT => 3]],],
];

运行

在浏览器访问

http://localhost:8787/user/getUser

即可实现一个简单的数据库查询。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【MATLAB】运算符及其优先级
  • sportbugs报告路径在linux和windows中的配置差异
  • 郑州建站网页手机版
  • 深度评测热门翻译工具,携手你的翻译得力助手
  • vim 安装与配置教程(详细教程)
  • Ubuntu构建只读文件系统
  • 【Python】数据可视化之分类图
  • 图像处理基础篇-镜像仿射透视
  • jmeter 梯度测试 如何查看TPS、RT指标
  • 基于单片机的多功能电子钟设计
  • 一个进程的情况下,例如 tomcat 只启动一个项目,cpu 很高,倒是内存很低,是什么原因呢?
  • Kotlin 流 Flow
  • 安装win7鼠标键盘不能动原因分析及解决办法
  • Unity3D在2D游戏中获取触屏物体的方法
  • Spring Boot-自定义banner
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android优雅地处理按钮重复点击
  • Android组件 - 收藏集 - 掘金
  • mysql innodb 索引使用指南
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React系列之 Redux 架构模式
  • Vue 2.3、2.4 知识点小结
  • 高程读书笔记 第六章 面向对象程序设计
  • 坑!为什么View.startAnimation不起作用?
  • 如何设计一个比特币钱包服务
  • 深度学习在携程攻略社区的应用
  • 使用Swoole加速Laravel(正式环境中)
  • 通过git安装npm私有模块
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # 计算机视觉入门
  • %check_box% in rails :coditions={:has_many , :through}
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (篇九)MySQL常用内置函数
  • (转载)虚函数剖析
  • (自用)交互协议设计——protobuf序列化
  • ****三次握手和四次挥手
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Remoting学习笔记(三)信道
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • ::什么意思
  • @AliasFor 使用
  • @Autowired多个相同类型bean装配问题
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600