我正在构建一个具有此过程的Web应用程序。更好的进程来同时处理大量的数据
1)用户寄存器
2)用户注册后,我运行一个queuing process该刮擦60K +值得客户数据。这些数据来自第三方API,我使用curl来做这件事。
3)我刮这些数据后,我将它存储在数据库中。
4)这些来自第三方的API刮数据具有分页,所以我要做的就是,我检查,如果有另一个页面(nextPageUrl
API的响应),如果有反应,我curl
然后再次获取所有客户数据并再次存储。这一直持续到api响应中没有nextPageUrl
。现在
//this is a pseudo code
RegisterUser(user);
CallThirdPartyAPI()
function RegisterUser(user){
insert_in_users_table(user)
}
function CallThirdPartyAPI($url=null){
$customers = get_all_customers();
for($customer as $cust){
store_in_customers_table();
if($cust->response_has_next_page_url)
CallThirdayPartyAPI($cust->next_page_url);
else
return false;
}
}
,你可以看到,这是确定的,如果我只有一次在我的web应用程序注册1个用户。但是,由于我有100多个用户在我的网络应用程序中注册,这就成了一个问题,因为抓取数据需要20-30分钟才能完成,而且我正在运行一次只有2个作业的作业队列。所以基本上需要完成2个工作才能执行其他工作。
现在,我正在寻找更好的解决方案,以提高系统效率。
您的建议将不胜感激。
PS:
我正在工作,通过主管
排队我在我的数据库来实现读取副本。我在master数据库中写入数据,同时读取副本以减少数据库的CPU使用量。
排队过程不够吗?一旦另一名工人可用,它会启动下一个工作人员? – James
'100多个用户在我的网络应用程序中注册'此时,您的系统也应该按比例缩放其他许多原因。 – JustOnUnderMillions
您可以为每个nextPage创建一个新的作业实例。但是在这种情况下,您应该限制活动作业的数量 –