热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Swoole初学者指南:快速上手异步并发编程

本指南旨在帮助Swoole初学者快速掌握异步并发编程的基本概念和实践方法。通过实例演示,我们将使用SwoolePHP扩展构建一个简单的客户端与服务器模型,并实现基本的通信功能。首先,我们将从客户端的实现入手(文件名为:client.php)。

我们来用swoole这个php扩展实现一个简单的客户端和服务器,并且让它们进行简单的交流
首先,我们先来实现客户端(命名为:client.php):

new swoole_client(SWOOLE_SOCK_TCP);
if (!$client->connect(‘127.0.0.1‘, 9501, -1))
{
    exit("connect failed. Error: {$client->errCode}\n");
}

fwrite(STDOUT, ‘Enter the message you want to send, and you can enter the no to quit it ‘."\n");
while(true) {
    fwrite(STDOUT, ‘client: ‘);  
    $info = fgets(STDIN);
    if(‘no‘."\n" === $info) {
        break;
    }
    $client->send($info);
    $recive = $client->recv();
    echo ‘server: ‘.$recive."\n";
}
$client->close();

然后,再来实现一个简单的服务器(命名为:server.php):

new swoole_server(‘127.0.0.1‘, 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);
$server->on(‘receive‘, function($server, $fd, $from_id, $data) {
    if(‘what is your name‘."\n" === $data) {
        $server->send($fd, ‘My name is huanghantao‘);
    }
    elseif(‘where are you from‘."\n" === $data) {
        $server->send($fd, ‘I am from China‘);
    }
    elseif(‘how old are you‘."\n" === $data) {
        $server->send($fd, ‘I am 20‘);
    }
    else{
        $apiKey = "7e97323fbb5b4c56aetc7f1ff5231b20"; 
        $apiURL = "http://www.tuling123.com/openapi/api?key=KEY&info=INFO"; 
        // 设置报文头, 构建请求报文 
        header("Content-type: text/html; charset=utf-8"); 
        $reqInfo = $data; 
        $url = str_replace("INFO", $reqInfo, str_replace("KEY", $apiKey, $apiURL)); 

        $res = json_decode(file_get_contents($url), true);
        $server->send($fd, $res[‘text‘]);
    }
});

$server->start();

接下来,进入这两个文件所在的目录

 
技术分享图片
1.PNG

然后再执行这server.php文件来启动服务器(注意: 一定要先启动服务器再来启动客户端,注:我是用的root,服务器和客户端需要开两个,一开始在一个命令行里试死活不行):
php server.php

 
技术分享图片
2.PNG

此时,就开始监听环回地址127.0.0.1的9501端口
接着,我们执行client.php这个文件:
php client.php

 
技术分享图片
3.PNG

这样,客户端和服务器就建立了一个TCP网络连接
现在,我们就可以在客户端和服务器进行通信了,现在我们来试一试,很好玩的:

 
技术分享图片
4.PNG

最后,我们输入no来让客户端主动断开与服务器的连接

 
技术分享图片
5.PNG




swoole入门


推荐阅读
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • 本文介绍如何在应用程序中使用文本输入框创建密码输入框,并通过设置掩码来隐藏用户输入的内容。我们将详细解释代码实现,并提供专业的补充说明。 ... [详细]
  • 本文介绍如何通过SQL查询从JDE(JD Edwards)系统中提取所有字典数据,涵盖关键表的关联和字段选择。具体包括F0004和F0005系列表的数据提取方法。 ... [详细]
author-avatar
手机用户2502917553
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有