我有一个连接到2个流行API的系统。我需要将每个数据聚合成一个统一的结果,然后进行分页。该项目的范围意味着该系统最终可能支持10个API。
每个API对每个请求施加最多50个结果限制。
汇总这些数据的最佳方法是什么,以便它是可靠的,即有序的,没有重复的等等
我在LAMP环境中使用CakePHP框架,但是,我认为这个问题与所有编程语言有关。
到目前为止,我的方法是查询每个提供程序的搜索API,然后填充MySQL表。从这里结果是排序,分页等。但是,我关心的是性能:API通信,解析,插入然后一次执行读取。
我错过了什么,有没有人有任何其他想法?我确信这是许多替代解决方案的常见问题。
非常感谢任何帮助。
答案 0 :(得分:1)
是的,这是一个常见的问题。
搜索SO以查找https://stackoverflow.com/search?q=%5Bphp%5D+background+processing
等问题每个试图这样做的人都意识到调用其他网站的数据很慢。前一个或两个似乎很快,但其他网站中断(你的应用程序中断)和其他网站很慢(你的应用程序很慢)
您必须断开前端与后端的连接。
选择1 - 使用后台进程预先查询数据,只需获取并加载数据库。
选择2 - 启动一个长时间运行的后台进程,并从JavaScript函数中检查它是否已完成。
选择3 - 用户的初始请求产生后台进程 - 然后您通过电子邮件向他们发送链接,以便他们可以在作业完成时返回。
答案 1 :(得分:1)
我有一个网站正在使用超过100个rss / atom feed,这就是我所做的:
最后一个想法:如果您的应用程序可能在生产中添加了新的Feed,那么您还应该检查Feed是否为“new”(即:db中没有先前的条目),如果是,则是应将所有当前可用的链接标记为非活动状态,否则,当您添加Feed时,该Feed中会有一个文章块,所有文章都具有相同的日期和时间。 (简单地说:我描述的方法仅用于将来添加到Feed中,过去的文章将无法使用)。
希望这会有所帮助。