workerman(代码片段)

jw-yahui jw-yahui     2022-12-10     307

关键词:

yum install php-process即可安装pcntl和posix扩展

https://www.workerman.net/doc

 

需要了解的基本概念

 

1、TCP传输层协议

TCP是一种面向连接的、可靠的、基于IP传输层协议。TCP传输层协议一个重要特点是TCP是基于数据流的,客户端的请求会源源不断的发送给服务端,服务端收到的数据可能不是一个完整的请求,也有可能是多个请求连在一起。这就需要我们在这源源不断的数据流中区分每个请求的边界。而应用层协议主要是为请求边界定义一套规则,避免请求数据混乱。

2、应用层协议

应用层协议(application layer protocol)定义了运行在不同端系统上(客户端、服务端)的应用程序进程如何相互传递报文,例如HTTP、WebSocket都属于应用层协议。例如一个简单的应用层次协议可以如下"module":"user","action":"getInfo","uid":456\n"。此协议是以"\n"(注意这里"\n"代表的是回车)标记请求结束,消息体是字符串。

3、短连接

短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。像WEB网站的HTTP服务一般都用短连接。

短连接应用程序开发可以参考基本开发流程一章

4、长连接

长连接,指在一个连接上可以连续发送多个数据包

注意:长连接应用必须加心跳,否则连接可能由于长时间不活跃而被路由节点防火墙断开。

长连接多用于操作频繁,点对点的通讯的情况。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多。所以长连接在每个操作完后都不断开,下次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

当需要主动向客户端推送数据时,例如聊天类、即时游戏类、手机推送等应用需要长连接。 长连接应用程序开发可以参考Gateway/Worker开发流程

 

试着用workerman开发一个在线聊天应用(代码片段)

聊天功能是很常见的一种功能,Workerman是一款开源高性能异步PHPsocket即时通讯框架。 什么是Workerman?Workerman是一款 开源 高性能异步 PHPsocket即时通讯框架 。支持高并发,超高稳定性,被广泛的用于手机app、移... 查看详情

workerman源码分析-实现最简单的原型(代码片段)

之前一直认为workerman源码理解起很复杂,这段时间花了3个下午研究,其实只要理解php如何守护化进程、信号、多进程、libevent扩展使用,对于如何实现就比较轻松了。相关代码都在github地址里,具体注释都有。守护化进程:http:/... 查看详情

windows下安装使用workman简单实例(代码片段)

转自:https://blog.csdn.net/Srodong/article/details/88351335首先下载workerman  https://www.workerman.net/download  下载好workerman,后在workerman文件下创建一个新的文件start.php  代码如下:<?phpuse 查看详情

thinkphp6+workerman消息推送(代码片段)

业务需求示例:系统后台监听有新的商品订单,新消息等的通知,推送给所有登陆系统的用户。逻辑:使用websocket建立连接,并设置定时器发送心跳保持连接不被断开。建立连接后,php端需要设置心跳时间... 查看详情

f8workerman长连接下聊天页面展示对方在线状态(代码片段)

阅读目录聊天页面展示对方在线状态预览效果涉及页面源码index.htmlEvents.php聊天页面展示对方在线状态前端初始状态下向GatewayWorker发送需要查看的用户ID。D:\\phpstudy_pro\\WWW\\tt.cc\\tla\\GatewayWorker-for-win\\view\\index.html//向GatewayWorker发... 查看详情

f7workerman页面初始化展示持久化聊天记录(代码片段)

阅读目录页面初始化展示持久化聊天记录展示获取到的聊天信息存在一个问题预览效果源码index.htmlapi.phpIndexController.php页面初始化展示持久化聊天记录D:\\phpstudy_pro\\WWW\\tt.cc\\tla\\GatewayWorker-for-win\\view\\index.htmlcase"init":varbild=\'"type":... 查看详情

php笔记-workerman整合到laravel中并创建websocket(代码片段)

...了下原始的Laravel并没有这个功能,发现php中websocket用workerman好像比较多。在此将他们结合下,但结合时发现了一些问题。此篇博文虽然以及结合起来了,但是在某些情况下,建议还是分开,做成微服务的那种... 查看详情

f3workerman群发及客户端和socket服务器保持长连接双向消息推送(代码片段)

...单群聊展示前端页面index.htmlEvents.php阐述手册:https://www.workerman.net/doc/gateway-worker/event-functions.html主要应用到这两个接口,最主要采用Lib\\Gateway类提供的接口来进行操作。上节采用:Gateway::sendToAll向所有人发送向所有客户端或者 查看详情

f4workerman长连接绑定用户id实现一对一客服聊天(代码片段)

阅读目录初始化ID绑定向客户端发送创建的初始ID接收服务端发送消息并向服务端发送当前客户sessionID客户端ID绑定sessionID当前用户发送信息给指定用户接收指定用户发送信息并发送信息效果源码index.htmlEvents.php初始化ID绑定初始... 查看详情

安装composer,tp5.0和workerman整合实现websocket通信demo(代码片段)

...think-worker如果需要在window下做服务端,还需要composerrequireworkerman/workerman-for-win5.新建一个项目启动文件server.php#!/usr/bin/envphp<?phpdefine(‘APP_PATH‘,__DIR__.‘/application/‘);define(‘BIND_MODULE‘,‘push/Worker‘);//加载框架引导文件require__D... 查看详情

基于workerman的实时推送(代码片段)

TCP/IPTCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议UDP包括DNS、TFTP等协议... 查看详情

php安装扩展的几种方法(代码片段)

转自:http://doc3.workerman.net/appendices/install-extension.html安装扩展注意与Apache+PHP或者Nginx+PHP的运行模式不同,WorkerMan是基于PHP命令行 PHPCLI 运行的,使用的是不同的PHP可执行程序,使用的php.ini文件也可能不同。所以在网页中... 查看详情

workerman-文件监控-牛刀小试

今天学习了workerman,初次体验了定时器的效果,结合文档。弄了个文件监控。好了废话不多说直接上代码1useWorkermanWorker;2require_once__DIR__.‘/Workerman/Autoloader.php‘;3$monitor_dir=realpath(__DIR__.‘/..‘);4$worker=newWorker();5$worker->name=‘ 查看详情

使用workerman实现在线聊天-第一版

workerman是一个php编写的通讯服务。之前的项目都是用它做数据接口服务这次用它做一个简单的在线聊天室~ 1.下载最新版本的workerman可以去 http://www.workerman.net去下载我这里将service和client分开了两个文件夹,方便管理大致... 查看详情

续安装好composer和workerman之后;tp5运行workerman的操作

TP5想要实现时时通讯:首先先安装好composer和workerman,我之前有写一篇安装的方法,在cmd里面安装;tp5手册上面有写cmd命令的代码;接下来是安装好后如何运行的;首先在项目中建立一个模块,这边就叫socket模块吧,里面有控制... 查看详情

thinkphp6使用rabbitmq消息队列(代码片段)

...队列。安装thinkphp6框架composercreate-projecttopthink/thinktp安装workerman扩展composerrequiretopthink/think-worker安装rabbitmq扩展composerrequireworkerman/rabbitmq代码编写生产者在app目录下新建workerman目录,并在其下创建Send.php文件,$options数组中... 查看详情

swoole和workerman哪个更易开发

...内存管理、数据结构、通信协议解析上肯定要比PHP开发的workerman高。功能上swoole提供的高级特性很多,列举几个workerman没有的吧,比如SSL/TLS隧道加密、http2.0、异步mysql驱动、异步redis驱动、异步的http/websocket客户端、process、lock... 查看详情

workerman自动加载等问题

如果加载有问题,在报错的地方加上代码。方便分析加载的文件。var_dump(get_included_files()); 如果composer无法正常加载,可以修改vendor/composer/autoload_static.php:24注意相对目录的正确。publicstatic$prefixDirsPsr4=array(‘think\composer\‘=>a... 查看详情