当前位置:首页 » 编程语言 » php排队

php排队

发布时间: 2023-02-13 00:59:00

‘壹’ php做一个排队等候的功能

你这个问题归根结底是想要做一个实时在线人数的功能:

但是http请求是无状态的,所以你没有办法实时知道多少人在线,就是说没有办法精确响应用户把浏览器关了,服务器就能知道并且把把用户标记为下线


解决办法:

服务器里维护一份列表,这个列表记录了每个用户的session_id,有效期比如可以设置为30分钟,在用户每次请求的时候都刷新下这个有效期,用户点击退出时就删除这个用户的session_id。

因此统计这个列表里未过期的sessionid个数就是当前的实时人数


这份表根据你系统的规模,可以是文本,mysql,也可以是memcache redis 都行


存在问题:

  1. 用户只是三十分钟停留在页面但是没有退出的系统把他认为下线了。这个可以通过“心跳包”来解决

  2. 用户关闭浏览器但是没有记为下线,这个就是我上面提到的 http无状态,这个没招


要想提高精确性就是减少有效期和心跳包的时间设定的结合,这个看你们的需求

‘贰’ 在PHP中如何使用消息列队

在写入队列的时候可以规定相应的规则如:
{'处理脚本':'test','data':{'test':'test'},'分组':‘1','处理结果':'0'}
这样就可以通过一个消息队列来处理整个项目的所以消息任务
把data发送给相遇的脚本返回处理结果,而这个分组可以实现分组多进程并发处理来解决效率问题。
效率问题的结局还可以在守护进程上进行增加,守护进程跟进当前的任务量发起适当的处理进程,处理进程再分发给具体的业务处理脚本!

‘叁’ 如何让同一个php文件自动排队运行

需要一个资源管理的概念。
a.php开始执行的代码头里申请使用资源,结束时释放资源。举个例子:项目组里只有小王一个会美工,现在小张和小米都需要叫小王帮助做一张同级别需求的图。这里,小张先找到小王,小王答应了,小王这个资源就先被小张占了。小米找到小王时,小王则告诉小米,他正在处理小张的需求,让小米等待。
如果你需要处理的同一个客户端的请求,可以使用session或者cookie来做资源管理。
如果是要解决多客户端,因为php没有application的概念,所以需要使用其他的介质,如:缓存文件,数据库,内存缓存方案(memcache、redis等)

热点内容
安卓弹钢琴的游戏叫什么名字 发布:2024-11-08 18:38:29 浏览:250
算法用英语 发布:2024-11-08 18:37:44 浏览:994
android自动弹出输入法 发布:2024-11-08 18:19:51 浏览:275
存储器最小单位 发布:2024-11-08 18:04:49 浏览:796
服务器挂网站怎么挣钱 发布:2024-11-08 18:03:52 浏览:858
csqlserver 发布:2024-11-08 17:43:08 浏览:207
sql绿色 发布:2024-11-08 17:26:48 浏览:806
安卓手机如何更新红标 发布:2024-11-08 17:25:23 浏览:63
python正则空格 发布:2024-11-08 17:14:18 浏览:235
蟑螂数据库 发布:2024-11-08 17:13:07 浏览:781