最新的swoole-cli已可以支持Windows,手把手带你在windows体验swoole

举报
迷彩 发表于 2023/05/01 10:05:14 2023/05/01
【摘要】 前言想必使用PHP作为开发语言的童鞋应该都听说过swoole,大致都知道swoole是什么.Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole 可以广泛应用于...

前言

想必使用PHP作为开发语言的童鞋应该都听说过swoole,大致都知道swoole是什么.

Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。总的来说Swoole是PHP 协程框架,能够.swoole是由纯 C 语言编写,完美支持PHP语言。可使用Swoole搭建了一个异步服务器,提供异步响应,推送,定时任务等一系列工作。解决PHP语言本身在fpm的场景下每个请求都需要重新加载,对资源消耗过多的问题.

由于swoole仅支持 Linux(2.3.32 以上内核)、FreeBSDMacOS 三种操作系统,以前对windows系统的支持不太好.想要在windows使用swoole,需要安装linux虚拟机或者安装docker,由于docker本身对windows系统的支持也不太友好,所以在windows上的体验极其糟糕.不过我在GitHub上看到最新的swoole已经可以支持windows系统,对于windows服务器的用户来说无疑是个好消息,下面就在windows系统体验一下


安装准备

环境:

  • windows7 64位(注:仅支持64位的系统)

  • cygwin64

  • 下载地址

https://github.com/swoole/swoole-src/releases



swoole-cli是免安装的,可直接使用,无需安装任何php相关的软件包,直接下载swoole-cli-cygwin64的可执行程序zip压缩包,然后解压到任意一个目录即可


配置环境变量

解压之后就是配置环境变量

解压之后目录结构如下:

将解压后的文件夹下的bin目录路径配置到系统的Path环境变量中。我的路径是G:\swoole-cli-v4.8.11-cygwin64\bin,你需要按照你本机解压后的具体位置配置.


查看安装的版本,验证是否安装成功

命令如下:

swoole-cli -v



查看swoole的配置


查看swoole中的php相关配置

下面查询到的PHP扩展模块是swoole自带的.如果您希望增加扩展到swoole-cli,可以在swoole官方的github主页提交issue

安装完成之后体验一下编辑简单的Web服务器.

体验开发简单的web服务器

<?php

$http = new Swoole\Http\Server('127.0.0.1', 9991, SWOOLE_BASE);

$http->on('start', function ($server) {

    echo "Swoole http server 已启动, 可访问 http://127.0.0.1:9501\n";
});

$http->on('request', function ($request, $response) {

    $response->header('Content-Type', 'text/plain');

    $response->end('你好,这是我的第一个swoole http web服务器!');

});
$http->start();

on绑定swoole中的动作事件.start是启动一个http服务

运行我们写好的服务器:

swoole-cli webserver.php

接着按照命令行提示复制链接到浏览器访问:

接着来测试一下websocket,这也是我们平时做实时通讯常用的协议

服务端:ws.php

<?php
//创建WebSocket Server对象,监听0.0.0.0:9502端口
$ws = new Swoole\WebSocket\Server('0.0.0.0', 9502);

//监听WebSocket连接打开事件
$ws->on('Open', function ($ws, $request) {
    $ws->push($request->fd, "你好\n".$request->fd);
});

//监听WebSocket消息事件
$ws->on('Message', function ($ws, $frame) {
    echo "消息: {$frame->data}\n";
    $ws->push($frame->fd, "server: {$frame->data}");
});

//监听WebSocket连接关闭事件
$ws->on('Close', function ($ws, $fd) {
    echo "client-{$fd} 已关闭\n";
});

$ws->start();

客户端:

<html>
 <head> 
  <title>测试Websocket</title> 
  <style> body { margin: 0; } canvas { width: 100%; height: 100% } </style> 
 </head> 
 <body> 
  <script>
	var wsServer = 'ws://127.0.0.1:9502';
	var websocket = new WebSocket(wsServer);
	websocket.onopen = function (evt) {
		console.log("Connected to WebSocket server.");
	};

	websocket.onclose = function (evt) {
		console.log("已断开连接");
	};

	websocket.onmessage = function (evt) {
		console.log('接收的数据来自: ' + evt.data);
	};

	websocket.onerror = function (evt, e) {
		console.log('错误信息: ' + evt.data);
	};

</script>   
 </body>
</html>

打开cmd执行:swoole-cli ws.php,看到如下图没有任何提示说明已经执行成功

然后在浏览访问:http://localhost/t3d/ws.html,这个是我的本地连接,需要根据你的实际情况访问,避免错误,务必把使用服务器来运行你的客户段代码,我一共打开两个访问窗口,效果如下:




总结

swoole的安装跟以前在windows上安装相比,简单了很多,基本无需任何安装操作,下载即可使用,只需配置环境变量.里面自带了php8.1以上的版本,无需自己安装,如果您需要添加扩展到swoole-cli,需要在GitHub上提交issue

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。