我在两个网站上使用两个独立且不同的API(网站1 =>我的应用=>网站2)。从一个站点的API中提取(获取)数据并将数据发送(发布)到另一个站点。有一层同步AKA“填补裂缝”(始终保持发送站点的数据与源镜像),以及一层非重复(确保站点1的数据集在站点2上没有重复的条目)。
当用户通过简单的POST按钮引发“同步”时。可能需要将来自SITE 1的数千个条目带入SITE 2.这样做的简单低级方法是从SITE 1循环获取数据,并在该循环中我有一个函数来获取数据并将其发送到SITE 2.当大规模工作时,这种类型的循环最肯定会在页面退出时失败或挂起几分钟。
以下是“低级/低技术”方式的一个例子。其中此示例的每个部分都非常耗时。所有操作都发生在一页/一页脚本上,用户可以停止。该页面将是白色的,空白的,并且不是非常用户友好。
// Get all of the data from site one
$siteOneDataNuggets = get_siteOne_data();
//Loop through all of site one's data
foreach($siteOneDataNuggets as $siteOneDataNugget){
//Post it to site two
post_siteTwo_data($siteOneDataNugget);
}
当有这样的过程可能需要一段时间我想展示某种加载屏幕/栏。如何实现这样的事情。
我正在寻找一种处理上述情况的编码哲学或标准方法。想法和理论是我正在寻找的,不一定是代码示例。
我自己先入为主的替代方案。
这样做的另一种方法可能是让一个页面充当我可以请求的本地化“API”,每个页面都有自己的$siteOneDataNugget
实例,将逻辑分布在1000页以上,而不是1单页。很可能是用ajax进给加载条/表示层。
进度报告
我不太喜欢替代方案。开始使用PHP CURL,当我发现加载需要几个小时(触发4分钟超时)时,我偶然发现EpiCurl中使用异步curl调用解释的blog post by Jaisen Mathai。哪个有自己的limitation我还没有征服。
答案 0 :(得分:0)
我在这个问题上的时间已经超前了。我正在做的事情真是愚蠢我向我的服务器发出了数千个AJAX请求,这些请求做了一些动作。我应该做的是使用WebSockets / socket.io,这样我就可以在客户端和服务器之间进行某种双向通信,并且能够处理批量操作和进度条。
在这个问题出现时,两者都处于起步阶段。