写点什么

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

作者:迷彩
  • 2022 年 7 月 23 日
  • 本文字数:1946 字

    阅读完需:约 6 分钟

前言

想必使用 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

发布于: 3 小时前阅读数: 8
用户头像

迷彩

关注

我的工作是常年写bug|公众号:编程架构之美 2020.06.18 加入

修bug的菜鸟~公众号:“互联网有啥事”已改名为“编程架构之美”

评论

发布
暂无评论
最新的swoole-cli已可以支持Windows,手把手带你在windows体验swoole_swoole_迷彩_InfoQ写作社区