redis优点主要是内存读取和本地持久化,但提供的数据类型太简单,只能字符串和一维key的操作。所以做做简单的存储和并发检索还是可以的,但是要想更复杂的功能,我们就要基于redis做封装。 那么,如果用workerman来开发仿造一个redis,php-frm直接连接worker进程中的内存变量,两者都是常驻内存,数据也都是在内存中的,就像Gateway::bindUid一样的原理,岂不是更爽。 暂且不管redis的...
我们有不同类型的硬件设备,想每种设备连接不同的Gateway端口。因为没有大面积测试过,请教下,如果只开一个register和BusinessWorker来管理多个Gateway,有没有什么隐患?...
需求是这样的,在onWorkerStart中,定时检测并异步执行耗时任务,当有客户端连接ws时,可以实时获取该进程任务的执行日志。 目前我采用的方案是文件和redis这样的中间件。我在想,既然timer和websocket同属于一个进程,那么能否不用中间件,直接在onWorkerStart里发送send给客户端呢?...
由于邮件发送比较耗时,所以我用AsyncTcpConnection异步任务,但由于workerman是多进程单线程,那么在如下场景中,该如何提高并发效率呢? 场景: 有2个耗时任务需要在同一时间执行,其中一个是邮件群发,假设要发送1000个邮件,任务进程100个。 方案疑问: 1、1000个邮件分别通过AsyncTcpConnection发送给100个进程。这种方案会因为100个进程被占满,而导致另一个任务必须等待1...
不知道哪里写的不对,设置了4个进程,同时打开3个网页,每个等待10s,结果总时长需要30s,求大神帮忙解释下,谢谢了 下图是http: 下图是websocket ...
下面两个图是我分别重启后截图,默认都是从client_id=1开始递增。 这样是不是一旦项目上线后,就不能关闭重启了,只能通过平滑重启,不然clietn_id与数据库的uid对不上了?或者有没有其他解决办法? 查看源码发现,client_id是通过ip+端口+connection_id的16进制,connection_id是当前连接数,所以workerman重启后,connection_id就从1重新开始计算了。 /...