我有几台服务器。每个服务器都有一个bot程序。机器人都连接到同一个mysql数据库。他们做的是,连接到数据库,查询数据库并获取包含username;password
行的.csv文件,登录特定网站上的帐户,执行一些自动化操作,将完成的帐户设置为{{1}在数据库上。
我很难确定最佳方法,以确保所有机器人都可以从同一个数据库轮询中提取数据,而不会发生冲突,也不会留下任何帐号。
我的想法是:
例如:
Done
这可能是一个问题,因为如果我需要扩展,我将不得不预先定义每个机器人。
Bot1 = row 0 to row 999
Bot2 = row 1000 to row 1999
Bot3 = row 2000 to row 2999 ...
=>的列让每个机器人选择500行,为其添加预定义值
所有500行=>列bot
仅适用于行bot
这可行,但可能仍有一些碰撞。除此之外,我的机器人需要处理CSV文件,因此它们实际上无法在数据库上实时工作。
我担心的是可扩展性。我希望能够添加尽可能多的服务器,让它们彼此保持良好的工作状态。
建议?
我正在阅读有关mysql lock()函数的内容,但由于我的机器人获取acconts(.csv文件)的方式,我不认为它会在这种情况下起作用。
答案 0 :(得分:0)
感谢您的回答。
我做的是:
我创建了一个PHP API,它获取一个status = 0的随机行,并以XML格式打印其信息。然后我在我的机器人中使用GET请求来使用这个PHP脚本获取一个随机行并将其放在一个变量上。后来,我使用正则表达式从早期变量中删除每一列并将它们放在各自的变量上。我的机器人在该帐户上运行后,它在使用我的PHP API抓取的行上设置status = 1,因此其他机器人不会再次触摸此行。通过这种方式,我可以运行多个服务器,没有任何问题,没有.CSV问题,唯一的问题是现在我的mysql服务器上有更多的负载,但这不会太难解决。