编程语言
首页 > 编程语言> > PHP中的编码理论:需要为多个队列引导流量(多路复用)

PHP中的编码理论:需要为多个队列引导流量(多路复用)

作者:互联网

我正在为我们的员工整理一个界面,上传他们需要行业统计数据的产品列表(目前一次手动执行一个).
然后,每个产品将通过webservice api提供给我们的stat引擎.
我会回复. Stat的引擎将从我的api请求“下一个受害者”.

用户上传的每个列表将包含50到1000个产品,并且将成为自己的队列.
目前,队列/列表可能每天增加10-20次(并通过完成删除)aprox.
如果成功,流量可能会在几个月后升级到每天700-900个列表.

我们计划采用简单的循环方法,将流量均匀地引导到队列中.
多路复用器将从列表A,然后是列表B,然后列出C等依次抓取顶部项目,直到再次循环回到列表A …请记住,列表/队列可以随时添加/删除.

我面临的问题只是概念化管理.
我想过将每个队列存储为一个平面文件,并通过关系数据库(MySQL)管理轮换.考虑做反过来.想要完全平坦的文件或完全关系的DB …底线,我很灵活.
无论如何,当我试图通过循环旋转无状态地融合参与者的变量列表时,我的大脑只是蒸汽锁定(我刚从快节假日回来,我不认为我的大脑已经回家了;)

有没有人做过这样的事情?
你是怎么处理的呢?
如果你不得不再做一次,你会有什么改进?

任何&欢迎提供所有提示/建议/建议.

注意:由于我们的stat引擎/工具的每个请求都会被隔开很多秒,如果不是几分钟,我需要保持这种无状态.

解决方法:

列表数据肯定应存储在数据库中.您的PHP端应该有一个视图,给出系统的状态,以及添加列表的表单.

由于每个请求都成为自己的队列,并且所有请求队列在优先级上都被认为是相同的,因此理想的表数可能是三个.一个用于列出请求及其相对于另一个的优先级(以确定循环中接下来是谁)和处理状态,另一个用于列出尚待处理的每个请求的内容(列表项),以及第三个表列出每个队列中的已处理项目.

您还需要一个执行实际处理的脚本,该脚本不是由用户请求驱动,而是由定期执行的系统调度作业(根据您的需要限制).这当然也可以是PHP.您可以在此处设置10个一次列表检查和更新.

处理将类似于:

>从最高优先级队列中选择最多10个项目的下一组.
>处理它们,在完成时更新其DB状态.
>更新上述队列的优先级,使其成为最低优先级.

如果添加了新队列,则会添加最低优先级.

优先级可以用整数表示.

您的用户需要耐心等待他们的列表进行处理,然后查看或下载结果.您可以在视图页面上为此设置自动刷新脚本.

标签:php,multiplexing
来源: https://codeday.me/bug/20190709/1414410.html