我正在为我们的员工整合一个界面,以上传他们需要行业统计信息的产品列表(目前一次手动上传一个)。
然后,每个产品都将通过网络服务 API 提供给我们的统计引擎。
我会回复的。 Stat 引擎将从我的 api 请求“下一个受害者”。
用户上传的每个列表将包含 50 到 1000 个产品,并且将是自己的队列。
目前,队列/列表可能每天大约添加(和通过完成删除)10-20 次。
如果成功,几个月后流量可能会增加到每天 700-900 个列表。
我们只是计划采用一种简单的循环方法来在队列之间均匀地引导流量。
多路复用器将从 List A 中获取最上面的项目,然后是 List B,然后是 List C 等等,直到循环回到 再次列出 A ... 请记住,可以随时添加/删除列表/队列。
我面临的问题只是概念化管理。
我考虑过将每个队列存储为一个平面文件并通过关系数据库 (MySQL) 管理轮换。想过反过来做。考虑使用完全平面文件还是完全关系数据库……总而言之,我很灵活。
无论如何,当我尝试无状态地将可变的参与者列表与循环旋转融合时,我的大脑只是 Steam 锁定(我刚结束一个短暂的假期,我认为我的大脑还没有回家;)
有没有人做过这样的事情?
你是怎么处理的?
如果让您重新来过,您会改进什么?
欢迎任何提示/建议/建议。
注意:由于来 self 们的统计引擎/工具的每个请求都会间隔很多秒,如果不是几分钟,我需要保持这个无状态。
最佳答案
当然,列表数据应该存储在数据库中。您的 PHP 端应该有一个显示系统状态的 View ,以及添加列表的表单。
由于每个请求都成为自己的队列,并且所有请求队列的优先级都被认为是相等的,因此理想的表数可能是三个。一个列出请求及其相对于另一个的优先级(以确定循环中的下一个)和处理状态,另一个列出内容(列表项)尚未处理的每个请求的列表,以及用于列出每个队列中的已处理项目的第三个表。
您还需要一个执行实际处理的脚本,它不是由用户请求驱动的,而是由定期执行的系统计划作业驱动的(节流到您想要的任何程度)。这当然也可以是 PHP。您可以在此处设置一次 10 个列表检查和更新。
处理过程是这样的:
如果添加新队列,它们将以最低优先级添加。
优先级可以用整数表示。
您的用户需要耐心等待他们的列表得到处理,然后才能查看或下载结果。您可以在您的 View 页面上为此设置一个自动刷新脚本。
关于php - PHP 编码理论 : Need to direct traffic for multiple queues (multiplexing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640172/
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
查看Ruby代码,它具有以下proc_arity:staticVALUEproc_arity(VALUEself){intarity=rb_proc_arity(self);returnINT2FIX(arity);}更多的是C编码风格问题,但为什么staticVALUE在单独的一行而不是像这样的:staticVALUEproc_arity(VALUEself) 最佳答案 它来自UNIX世界,因为它有助于轻松grep函数的定义:$grep-n'^proc_arity'*.c或使用vim:/^proc_arity
我创建了一个由于“在运行时执行的单例元类定义”而无法编码的对象(这段代码的描述是否正确?)。这是通过以下代码执行的:#defineclassXthatmyusesingletonclassmetaprogrammingfeatures#throughcallofmethod:break_marshalling!classXdefbreak_marshalling!meta_class=class我该怎么做才能使对象编码正确?是否可以从对象instance_of_x的classX中“移除”单例组件?我真的需要一个建议,因为我们的一些对象需要通过Marshal.dump序列化机制进行缓存。
我在使用Ruby1.9.2p290更改文本文件的编码时遇到问题。我收到错误消息invalidbytesequenceinUTF-8(ArgumentError)。问题(我认为)在于字符集似乎是未知的。如果我执行以下操作,则从命令行:$filetest.txt我得到:Non-ISOextended-ASCIIEnglishtext,withCRLFlineterminators或者,或者,如果我这样做:$file-itest.txt我得到:test.txt:text/plain;charset=unknown但是,如果我这样做,在Ruby中:data=File.open("test.tx
我正在向我的Controller发送一个base64图像并按原样保存它。现在我需要显示该图像。这是我要显示的内容,但未显示图像:"/>为了编码,我使用了这个java脚本函数encodeURIComponent();我的编码图像格式:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/........ 最佳答案 你不需要解码base64应该可以 关于ruby-on-rails-在rails中显示base64编码的图像,我们在StackOve
我试图通过点击一个链接获得一个带有ISO-8859-1编码的页面,所以代码类似于这样:page_result=page.link_with(:text=>'link_text').click到目前为止,我得到的结果编码错误,所以我看到的字符如下:'T�tulo:'insteadof'Título:'我尝试了几种方法,包括:使用代理在第一个请求中声明编码:@page_search=@agent.get(:url=>'http://www.server.com',:headers=>{'Accept-Charset'=>'ISO-8859-1'})说明页面本身的编码page_result.