华企号 互联网综合 最新的swoole-cli已可以支持Windows,手把手带你在windows体验swoole

最新的swoole-cli已可以支持Windows,手把手带你在windows体验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 以上内核)、​​FreeBSD​​、​​MacOS​​ 三种操作系统,以前对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-cygwin64bin,你需要按照你本机解压后的具体位置配置.

 

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

命令如下:

swoole-cli -v
1.

查看swoole的配置

 

查看swoole中的php相关配置

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

 

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

体验开发简单的web服务器
<?php

$http = new SwooleHttpServer(‘127.0.0.1’, 9991, SWOOLE_BASE);

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

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

$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 SwooleWebSocketServer(‘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,这个是我的本地连接,需要根据你的实际情况访问,避免错误,务必把使用服务器来运行你的客户段代码,我一共打开两个访问窗口,效果如下:

 

 

作者: 华企网通王鹏程序员

我是程序员王鹏,热爱互联网软件开发和设计,专注于大数据、数据分析、数据库、php、java、python、scala、k8s、docker等知识总结。 我的座右铭:"业精于勤荒于嬉,行成于思毁于随"
上一篇
下一篇

发表回复

联系我们

联系我们

028-84868647

在线咨询: QQ交谈

邮箱: tech@68v8.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部