Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 大规模数据处理,国外API';s、 和装载杆_Php_Mysql_Ajax_Api_Curl - Fatal编程技术网

Php 大规模数据处理,国外API';s、 和装载杆

Php 大规模数据处理,国外API';s、 和装载杆,php,mysql,ajax,api,curl,Php,Mysql,Ajax,Api,Curl,我正在使用来自两个网站(Site1=>MyApp=>Site2)的两个独立且不同的API。从一个站点的API中拉入(获取)数据并将数据发送(发布)到另一个站点。有一个同步层,即“填充裂缝”(始终保持发送站点的数据与源镜像),还有一个不重复层(确保站点1的数据集在站点2上没有重复条目) 当用户通过一个简单的表单POST按钮诱导“同步”时。可能需要将来自站点1的数千条条目带入站点2。一种简单的低级方法是从站点1获取一个数据数组,循环它,在这个循环中,我有一个函数,可以获取数据并将其发送到站点2。在大

我正在使用来自两个网站(Site1=>MyApp=>Site2)的两个独立且不同的API。从一个站点的API中拉入(获取)数据并将数据发送(发布)到另一个站点。有一个同步层,即“填充裂缝”(始终保持发送站点的数据与源镜像),还有一个不重复层(确保站点1的数据集在站点2上没有重复条目)

当用户通过一个简单的表单POST按钮诱导“同步”时。可能需要将来自站点1的数千条条目带入站点2。一种简单的低级方法是从站点1获取一个数据数组,循环它,在这个循环中,我有一个函数,可以获取数据并将其发送到站点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多个页面,而不是一个页面。最有可能的做法是使用ajax为加载栏/表示层提供支持

进度报告


我还没有深入研究这个替代方案。从PHP CURL开始,当我发现加载需要几个小时(触发4分钟超时)时,我偶然发现了本文中介绍的使用异步CURL调用的方法。我还没有征服它自己。

在这一点上,我远远领先于我的时代。我所做的真的很愚蠢,我向我的服务器发出了数千个AJAX请求,这些请求执行了一些操作。我应该做的是使用WebSockets/socket.io,这样我就可以在客户端和服务器之间进行某种双向通信,并能够处理批量操作和进度条

在提出这个问题时,两人都处于婴儿期


为什么不在后台加载它,用户不想等待。我想这就引出了一个问题,你如何在后台加载一些东西,我正在用谷歌搜索。在工作中,我将导入数据的文件称为exec(“nohup php file.php>/dev/null 2>&1&”;然后在用户可能需要调整我的服务器内存时向用户发送通知,我不知道dreamhost是否可以。我觉得使用ajax也可以做到这一点,只需ping页面上的大量循环即可。不完全是我要找的。