如何让同一个php文件自动排队运行?

如何让同一个php文件自动排队运行?,第1张

需要一个资源管理的概念。

a.php开始执行的代码头里申请使用资源,结束时释放资源。举个例子:项目组里只有小王一个会美工,现在小张和小米都需要叫小王帮助做一张同级别需求的图。这里,小张先找到小王,小王答应了,小王这个资源就先被小张占了。小米找到小王时,小王则告诉小米,他正在处理小张的需求,让小米等待。

如果你需要处理的同一个客户端的请求,可以使用session或者cookie来做资源管理。

如果是要解决多客户端,因为php没有application的概念,所以需要使用其他的介质,如:缓存文件,数据库,内存缓存方案(memcache、redis等)

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

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

解决办法:

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

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

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

存在问题:

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

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

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11825961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存