Swoole入门:拆分我们的服务(独立数据库操作层)

Swoole-真正的PHP Web开发框架 一、Swoole框架介绍swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用框架的所有功能。swoole通过配置文件可以实现在轻松更换模块驱动方式。比如数据库连接,可以很方便得在Pdo MySQL M 阅读详情

http://blog.youkuaiyun.com/github_26672553/article/details/79075801
前面我们简单学习了”swoole如何执行异步任务”?演示了一个“用户注册”的案列,大致的架构如下图:
这里写图片描述

需要注意的是:发送邮件和赠送虚拟币(积分)这2个task,是必须在用户数据入库成功之后,才投递的。

现在可以来完成我们的服务拆分(把数据库操作拆分出来)。
前面:http://blog.youkuaiyun.com/github_26672553/article/details/79075801
我们是在user_reg_server.php中:

if(用户数据入库操作){
  //再投递 其他2个task
}

现在我们需要把入库操作拆分成单独的一个服务,然后在user_reg_server.php中调用这个db_server.php。
这里写图片描述

db_server.php代码如下:

<?php

/**
 * 这是数据库操作服务
 *
 */

$serv = new swoole_server("10.211.55.15", 9502);  // 又一个服务:因为我们在一台机器上,所以更改端口

// 接收
$serv->on('receive', function($serv, $fd, $from_id, $data) {

    // 处理用户数据入库
    // $userInfo = json_decode($data,true);
    // insert into user(`name`,`email`)values('{$userInfo['name']}','{$userInfo['email']}')

    $insert_result = 110; // 插入成功返回的id
    // 发送入库结果回去
    $serv->send($fd,$insert_result);
});


$serv->start();

user_reg_server里如何连接db_server?

$serv->on('receive', function($serv, $fd, $from_id, $data) {

    // 准备连接db_server这个数据库操作服务
    $client = new swoole_client(SWOOLE_SOCK_TCP);
    $client->connect("10.211.55.15", 9502); // 连接db_server
    $client->send($data); // 发送数据到db_server
    $dbResult = $client->recv(); // 接收db_server的返回内容

    if($dbResult){
        $serv->send($fd,$dbResult);
    }else{
        $serv->send($fd,"add user fail");
    } 
});

从上面代码可以看出:在user_reg_server的onReceive回调函数里,我们连接了db_server,把从前端传递过来的“用户注册数据”传递给了db_server,并接收db_server的返回数据,发送给调用user_reg_serve的客户端(也就是addUser.php)。

如果数据入口成功,addUser.php会收到字符串101,如果失败会收到add user fail。

至此就完成了数据库操作服务的拆分。

需要注意的是:
https://wiki.swoole.com/wiki/page/p-client.html

swoole_client有两种方式:同步阻塞客户端和异步非阻塞客户端。
*
1、php-fpm/apache环境下只能使用同步客户端
2、异步客户端只能使用在cli命令行环境
*
我们的案列中,addUser.php是web网站要在浏览器上供用户访问的,所以必须使用”同步阻塞客户端”的方式;而在user_reg_server中我们其实还可以使用”异步非阻塞客户端”的方式。

PHP7.4环境下手把手迁移ThinkPHP6.0:从Composer依赖调整到Swoole适配 本文详细介绍了在PHP7.4环境下从ThinkPHP5.1升级到6.0的完整迁移过程,包括Composer依赖调整、语法兼容性处理以及Swoole协程支持的深度配置。通过实战案例和性能优化建议,帮助开发者高效完成框架升级,显著提升系统性能。 阅读详情

相关推荐

PHP开发者成长路线与高并发架构实战

PHP作为支撑全球80%网站的企业级解决方案,其开发者成长路径需要系统化规划。从语言基础、Web开发三件套到数据库操作,初级开发者需夯实基础;中级阶段应掌握主流框架如Laravel、设计模式及性能优化技巧;高级开发者则需具备分布式架构设计能力,包括微服务拆分、高并发处理(如Swoole协程)和DevOps实践。现代PHP技术栈如PHP 8.x的JIT编译器、命名参数等特性显著提升性能,而Redis、Swoole等扩展模块为高并发场景提供解决方案。在企业级项目中,合理的缓存策略、数据库优化和异步处理是应对高并

weixin_30074763的博客 315

swoole+Redis实现实时数据推送

一个简单的redis订阅、websocket推送demo

Lancelot 1万+

从零到一:基于PX4+Gazebo+ROS2的无人机轨迹跟踪仿真环境全栈搭建

本文详细介绍了在Ubuntu 22.04系统上,从零开始搭建基于PX4、Gazebo Garden和ROS2 Humble的无人机轨迹跟踪仿真环境的完整流程。内容涵盖PX4 SITL编译、Gazebo安装、ROS2配置、Micro XRCE-DDS Agent通信桥接以及QGroundControl地面站部署,并提供了创建自定义ROS2节点实现圆形轨迹跟踪的实战代码与关键调试技巧,帮助开发者快速构建全栈仿真开发环境。

swift5iosmith的博客 911

swoole详解

1、swoole结构图 2、swoole流程图 3、详细流程图 3.1、Master:处理核心事件驱动(主进程)3.2、Reactor:   处理TCP连接,收发数据的线程。Swoole的主线程在Accept新的连接后,会将这个连接分配给一个固定的Reactor线程,并由这个线程负责监听此socket。在socket可读时读取数据,并进行协议解析,将请求投递到Worke...

anpinmao8082的博客 342

GB28181协议实战:5分钟搞定海康摄像头SIP注册失败问题(附Wireshark抓包分析)

本文详细解析了海康摄像头在GB28181协议下SIP注册失败的7个关键原因及解决方案,包括网络可达性、鉴权参数、NAT穿越等核心问题。通过Wireshark抓包分析,提供快速定位方法,帮助工程师高效解决SIP注册失败问题,提升实时图像联调效率。

weixin_29212867的博客 550

带隙基准电路设计实战:从HSPICE仿真到Virtuoso版图全流程解析

在模拟集成电路设计中,基准电压源是确保系统精度与稳定性的核心模块。其基本原理在于巧妙结合具有正、负温度系数的电压,通过加权求和实现近似零温度系数的稳定输出,这一特性对于高精度数据转换器、电源管理芯片等至关重要。从工程实践角度,利用HSPICE进行深入的直流工作点、温度扫描和工艺角仿真,是验证电路性能、优化温度系数和电源抑制比的关键步骤。而借助Cadence Virtuoso进行版图实现时,必须重点关注电阻与BJT的匹配布局、敏感节点的保护以及电源完整性设计,以确保设计意图在硅片上得以准确呈现。通过完整的从前

weixin_29181861的博客 283

TP6+Swoole4 反向代理配置

Nginx反向代理配置 首先配置反向代理前已经要把之前配置过的伪静态删除掉,不然保存的时候报错 以下是反向代理的完整配置,请注意其中的端口号[8000]当前这个端口号就是config\swoole.php文件中的server.port配置中的端口号 location ~* .(php|jsp|cgi|asp|aspx)${ proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $r

CRMEB小程序商城的博客 1048

逐飞vs龙邱:英飞凌miniwiggler仿真器硬件接口差异全解析(附拆机对比图)

本文通过拆解对比逐飞与龙邱两家厂商的英飞凌miniwiggler仿真器,详细解析了其硬件接口的核心差异。重点分析了Type-C接口的取舍、DAP调试协议(SWD)的支持、电源设计(跳线帽vs拨码开关)以及工艺用料,为嵌入式开发者与智能车竞赛选手提供了清晰的选型参考和实际应用建议。

weixin_29189003的博客 111

swoole模拟多服务器Nginx反向代理实现负载均衡

探索负载均衡,借用php的 swoole 扩展根据不同的端口,启动了多个服务器,然后使用Nginx反向代理,尝试了一下负载均衡,具体搭建过程如下。 1.安装lnmp 具体的安装步骤就省略了,不会的参考一键安装包 注意最好编译安装,便于swoole的扩展编译 2. 安装 swoole swoole的安装下载参考swoole官网 3. 编写服务程序 文件 s1.php <?php ...

houhj168的专栏 614

【已解决】飞牛nas(fnOS)异常断电导致硬盘未挂载(无法挂载),系统内部错误修复、救回数据全流程!(含更新系统后外接 NTFS 格式硬盘丢失的修复方法)

fnOS 飞牛NAS遭遇非正常断电后,存储空间显示「未挂载」或更新系统后外接 NTFS 格式硬盘丢失,点击挂载提示「系统内部错误」!💥 博主已经完美恢复,本文记录了相关的解决方案,帮您恢复或最大程度保住重要数据🎉

XiaoqiangClub的博客 2161

UNet 改进(19):与ASPP结合的图像分割模型

这个代码实现了一个改进版的UNet模型,在传统的UNet架构基础上,引入了ASPP模块来增强模型捕获多尺度上下文信息的能力。​​UNet主干网络​​:经典的编码器-解码器结构,带有跳跃连接​​ASPP模块​​:位于瓶颈层,用于提取多尺度特征。

2401_82355416的博客 877

如何处理几十万条并发数据_Swoole 如何处理高并发以及异步 I/O 的实现

Swoole 介绍1.swoole提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis, 数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole还内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。2.Swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能...

weixin_39862697的博客 2376

ESP32S3接入讯飞在线语音识别教程及配套源代码

本文介绍了如何使用ESP32-S3开发板实现讯飞在线语音识别功能。首先,需要准备硬件设备,包括ESP32-S3开发板、麦克风模块、MicroSD卡模块和扬声器模块。接着,安装Arduino IDE并配置ESP32-S3开发环境,注册讯飞开放平台账号并获取API凭证。然后,通过I2S接口连接麦克风模块,并编写代码实现语音录制、Base64编码、API请求和识别结果处理。代码包括初始化WiFi、麦克风、系统时间,以及录制语音、发送请求、解析响应等功能。最后,通过按键触发录音,并将识别结果输出到串口。

2401_88800025的博客 746

真正的PHP Web开发框架之Swoole,你真的知道吗?!

一、Swoole框架介绍 swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用框架的所有功能。 swoole通过配置文件可以实现在轻松更换模块驱动方式。比如数据库连接,可以很方便得在Pdo MySQL

weixin_49163826的博客 2085

【从零开始入门unity游戏开发之——C#篇37】进程、线程、C# 中实现多线程有多种方案和async/await异步编程

进程、线程、C# 中实现多线程有多种方案和async/await异步编程

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1465

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Swoole分布式系统搭建与使用指南

Swoole Distributed 是一个基于Swoole扩展实现的分布式应用框架,旨在简化分布式环境下的开发流程,提高服务的并发处理能力和可扩展性。本指南将通过分析其GitHub仓库 [SwooleDistributed](https://github.com/SwooleDistributed/SwooleDistributed.git),详细介绍项目的目录结构、启动文件以及配置文件,帮助开...

gitblog_00901的博客 1112

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Swoole介绍-真正的PHP Web开发框架

一、Swoole框架介绍 swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用

逆袭木头人的博客 5945

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Swoole Task 项目教程

Swoole Task 项目教程 项目介绍 Swoole Task 是一个基于 Swoole 扩展的高性能异步任务处理框架。它允许开发者轻松地在 PHP 环境中实现异步任务分发和处理,从而提高应用的并发处理能力和响应速度。Swoole Task 充分利用了 Swoole 的事件驱动和协程特性,使得任务处理更加高效和稳定。 项目快速启动 环境要求 PHP >= 7.2 Swoole 扩展 &...

gitblog_00598的博客 421

db和model用哪个开发大型项目 thinkphp_真正的PHP Web开发框架之Swoole,你真的知道吗?!...

一、Swoole框架介绍swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用框...

weixin_39864261的博客 229

微服务重构 PHP 开源 CRM 源码:企业级客户管理系统开发与容器化实践

响应速度:客户列表查询平均耗时从 800ms 降至 150ms;部署频率:从每月 1 次全量发布提升至每周 3 次按需发布;资源成本:服务器节点数减少 40%,CPU 利用率从 25% 提升至 65%。在企业数字化转型加速的背景下,客户关系管理(CRM)系统已从单一的业务工具演变为支撑销售、营销、客服全链路的核心平台。

huomiyu的博客 624

基于Thinkphp和Laravel的社区便民服务在线政务服务系统-

本系统后端采用 PHP 语言搭配Thinkphp或者 Laravel 框架,PHP 语法简洁且功能强大,Laravel 或者Thinkphp框架能优化代码结构、提升开发效率,高效实现系统核心逻辑与数据库交互。前端运用 Vue 框架,其组件化开发与响应式设计,可打造流畅交互界面。MySQL 数据库稳定可靠,能安全存储海量文档数据,整体而言,这些成熟技术相互配合,能顺利完成系统开发。开发软件: hbuiderx,vscode、Adobe Dreamweaver等。

Q_Q1963288475的博客 1140

PHP-MS完全指南:从零开始构建高性能PHP微服务架构

PHP微服务框架(php-msf)是Camera360社区服务器团队基于Swoole自主研发的现代化PHP协程服务框架,专为构建高性能、高并发的微服务架构而生。🚀 作为Swoole的工程级企业应用框架,php-msf已经经历了Camera360亿级用户高并发大流量的严峻考验,是构建现代化PHP微服务的终极解决方案。 ## 📊 为什么选择PHP-MSF微服务框架? 在传统PHP开发中,我们通

gitblog_00050的博客 429

PHP程序员进阶路线图(从菜鸟到百万年薪的4个关键阶段)

掌握PHP程序员进阶核心路径,系统提升技术实力与职场竞争力。涵盖Web开发、框架应用、架构设计等关键场景,结合php程序员节日特别分享的4大成长阶段与实战方法,助你从入门迈向百万年薪。值得收藏

InstrWander的博客 871

Mix 模块化开发揭秘:如何像搭积木一样灵活组合你的PHP应用

Mix 作为一款强大的 PHP 命令行模式开发框架,支持 Swoole、Swow、WorkerMan、FPM、CLI-Server 等多种运行环境,其模块化设计让开发者能够像搭积木一样灵活组合应用组件,极大提升开发效率和代码复用性。本文将深入探讨 Mix 的模块化开发机制,带你领略如何轻松构建可扩展的 PHP 应用。 ## 模块化开发的核心优势:灵活与高效并存 🚀 模块化开发是现代软件开发的

gitblog_00303的博客 533

Mix PHP 源码深度剖析:理解框架核心设计模式和架构思想

Mix PHP 作为一款高性能的 PHP 命令行模式开发框架,支持 Swoole、Swow、WorkerMan、FPM、CLI-Server 等多种运行环境,其优秀的架构设计和设计模式应用是实现这一目标的关键。本文将深入剖析 Mix PHP 源码中的核心设计模式和架构思想,帮助开发者更好地理解框架的内部工作机制。 ## 依赖注入容器:Bean 工厂模式的精妙实现 在 Mix PHP 中,依赖注

gitblog_01111的博客 319
上一篇: Swoole入门:执行异步任务01(使用案列,简单逻辑梳理)
下一篇: 分布式缓存:memcached(写操作缓存)
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值