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

2024-09-07 07:04

本文主要是介绍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

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

这篇关于PHP轻量级高性能HTTP服务框架 - webman的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144393

相关文章

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。