win10 子系统 WSL
以下文章转载自【良许Linux】公众号 Linux在程序员中属于高逼格的存在,当然安装了图形界面的程序员要减分,毕竟你需要用鼠标了!程序员的桌面不能比谁的更酷更炫,要比谁的屏幕多,桌面颜色少! Windows向来是没有这种光圈的,因为它的目标是小白用户。当然它的cmd命令从始至终充满了科技的味道,一直都是黑白两色。 微 […]
以下文章转载自【良许Linux】公众号 Linux在程序员中属于高逼格的存在,当然安装了图形界面的程序员要减分,毕竟你需要用鼠标了!程序员的桌面不能比谁的更酷更炫,要比谁的屏幕多,桌面颜色少! Windows向来是没有这种光圈的,因为它的目标是小白用户。当然它的cmd命令从始至终充满了科技的味道,一直都是黑白两色。 微 […]
由于目前 ThinkPHP 与 Swoole 的兼容性并不是很稳定,因此打算不再更新 Think-Swoole 系列文章,未来根据实际情况再决定是否重新开辟一个新的专栏介绍 Swoole 在 ThinkPHP 中的应用。若有 Swoole 需求的场景,可以试试 Hyperf 框架,目前公司生产环境一直在用,很稳定。
使用场景 在 Server 程序中如果需要执行很耗时的操作,比如一个聊天服务器发送广播,Web服务器中发送邮件。如果直接去执行这些函数就会阻塞当前进程,导致服务器响应变慢。例如:用户注册场景,完成注册并发送激活邮件的功能,需要以下几步: 客户端提交 POST 数据 -> 服务器获取到数据 -> 完成注册将用 […]
通过前面的实例中,如果按照之前的事件监听方式,客户端的每个场景事件,服务端都需要创建每个对应的事件,如果事件太多, app/listener 目录下将会有很多的文件(其实也不算什么坏现象),事件订阅就是为了解决这一问题,把所有的事件都写在一个文件中。下面用事件订阅的方式处理事件 首先需要把之前在 app/event.p […]
Think-Swoole 3.0 中 Websocket 新增了 Room 聊天室功能,它主要用于群发消息,但不同Room之间的消息又是相互隔离的。当我们进入一个聊天室,那么我们的进入、离开以及发送的消息只有这个聊天室的 fd 能接收到。 config.swoole.php ‘websocket’ => [ ‘e […]
WebSocket 客户端消息的解析 前面我们演示了当客户端连接服务端,会触发连接事件,事件中我们要求返回当前客户端的 fd。当客户端发送消息给服务端,服务端会根据我们的规则将消息发送给指定 fd 的客户端: app/listener/WsConnect.php <?php declare (strict_typ […]
什么是客户端的 fd fd 是在 Swoole 中客户端的唯一标识符,fd 是复用的,当连接关闭后 fd 会被新进入的连接复用,正在维持的 TCP 连接 fd 不会被复用。 获取当前客户端的fd app/listener/WsTest.php <?php declare (strict_types = 1); n […]
什么是 WebSocket WebSocket 协议是基于 TCP 的一种新的网络协议,使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 为什么需要 WebSock […]
配置文件: app/config/swoole.php . . . ‘server’ => [ ‘host’ => env(‘SWOOLE_HOST’, ‘0.0.0.0’), // 监听地址 ‘port’ => env(‘SWOOLE_PORT’, 9501), // 监听端口 ‘mode’ =&g […]
由于 Swoole 服务运行过程中 PHP 文件是常驻内存运行的,这样可以避免重复读取磁盘、重复解释编译 PHP,以便达到最高性能。所以更改业务代码后必须手动 reload 或者 restart 才能生效。