当前位置: 首页 > 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

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

http://www.lryc.cn/news/431859.html

相关文章:

  • Python实现人工鱼群算法
  • 【网络安全】密码学概述
  • Java连接SSH
  • 怎么取消MAC 输入首字母总是自动变大写
  • 【无损检测】基于用深度学习的工业超声B-Scan 图像中的焊缝缺陷
  • iOS——GCD再学习
  • SVD降维
  • 剖析Cookie的工作原理及其安全风险
  • 规控面试复盘
  • Elastic Stack--ES集群加密及Kibana的RBAC实战
  • 【开源免费】基于SpringBoot+Vue.JS图书个性化推荐系统(JAVA毕业设计)
  • STM32(F103ZET6)第十九课:FreeRtos的移植和使用
  • 索尼的Web3蓝图:从技术创新到现实应用的全方位布局
  • 探索Java中的分布式消息队列与事件总线:架构、实现与最佳实践
  • HTML零基础教程(超详细)
  • 011.Python爬虫系列_bs4解析
  • django摄影竞赛小程序论文源码调试讲解
  • Unity-OpenCV-Imgproc函数概览
  • 水晶连连看 - 无限版软件操作说明书
  • 目标检测-YOLOv3
  • vscode好用的快捷键整理~
  • Docker in Docker 实践 on mac
  • Flask-Session扩展,使用Redis存储会话数据
  • urdf ( xacro ) 的 collision碰撞参数设置
  • iOS——方法交换Method Swizzing
  • 【有啥问啥】大模型应用中的哈希链推理任务
  • DevExpress WinForms v24.1新版亮点:功能区、数据编辑器全新升级
  • FreeRTOS内部机制学习01(任务创建的细节以及任务调度的内部机制)
  • CANoe突然出现Trace窗口筛选项无法显示的问题
  • Linux日志-sar日志