Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Laravel—高效地将大型外部API消耗到数据库中_Laravel_Laravel Queue_Laravel Api - Fatal编程技术网

Laravel—高效地将大型外部API消耗到数据库中

Laravel—高效地将大型外部API消耗到数据库中,laravel,laravel-queue,laravel-api,Laravel,Laravel Queue,Laravel Api,我正在尝试使用Paypal API事务端点 我想获取给定帐户的所有交易记录。这一数字可能在10亿笔交易中。对于这些事务中的每一个,我都需要将其存储在数据库中,以供排队作业处理。我一直在试图找出拉拉维尔这么多唱片的最佳方式。Paypal的最大请求项目限制为每页20个 我最初的想法是,当用户向我提供获取前20项并对其进行处理的API凭据时,创建一个作业,然后从包含要使用的起始索引的第一个作业中分派一个作业。这将永远循环,直到出错为止。这似乎不太好,因为它会导致保存这些API凭据时出现网关超时,对AP

我正在尝试使用Paypal API事务端点

我想获取给定帐户的所有交易记录。这一数字可能在10亿笔交易中。对于这些事务中的每一个,我都需要将其存储在数据库中,以供排队作业处理。我一直在试图找出拉拉维尔这么多唱片的最佳方式。Paypal的最大请求项目限制为每页20个

我最初的想法是,当用户向我提供获取前20项并对其进行处理的API凭据时,创建一个作业,然后从包含要使用的起始索引的第一个作业中分派一个作业。这将永远循环,直到出错为止。这似乎不太好,因为它会导致保存这些API凭据时出现网关超时,对API的请求最终超时(在获取所有事务之前)。我还应该提到,事务的总数是未知的,因此链接似乎不是答案,因为无法知道要分派多少个作业


想法?获取API数据是否最适合某项工作

您可以在第一个作业结束时调度同一个作业,该作业查询当前数据库,以查找该作业事务的起始索引


因此,即使您的作业出错,您也可以再次分派它,然后它将从之前结束的位置恢复

您可以在第一个作业结束时分派相同的作业,该作业将查询当前数据库以查找该作业事务的起始索引


所以,即使您的作业出错了,您也可以再次分派它,然后它将从先前结束的位置恢复。

是的,作业还有很长的路要走。我不熟悉paypal api,但似乎请求是有速率限制的。。您可能希望将api请求延迟一点。。您还可以创建一个类,通过跟踪最新的请求来监视api请求的使用情况,并在作业中确定何时触发下一个请求并将其记录在数据库中

我卑微的忠告
请不要拉所有的数据,因为你的数据库会很快膨胀,而且每次你有一个新帐户时,你都需要扩展,这不是一件容易的事情

是的,这项工作还有很长的路要走。我不熟悉paypal api,但似乎请求是有速率限制的。。您可能希望将api请求延迟一点。。您还可以创建一个类,通过跟踪最新的请求来监视api请求的使用情况,并在作业中确定何时触发下一个请求并将其记录在数据库中

我卑微的忠告
请不要拉所有的数据,因为你的数据库会很快膨胀,而且每次你有一个新帐户时,你都需要扩展,这不是一件容易的事情

可能你需要将你的应用程序与另一个数据引擎(如AWS)链接,无论如何,我认为最好的办法是创建一个APi,只提取最重要的数据,编制索引,并将所有大数据保存在另一个端点中,如果你需要,可以在那里访问这些数据。可能你需要将你的应用程序与另一个数据引擎(如AWS)链接,无论如何,我认为最好的办法是创建一个APi,只提取最重要的数据,编制索引,并将所有大数据保存在另一个端点中,如果需要,您可以在那里访问它们。

是的,问题是数据需要基于事务进行处理。但我不能在处理后转储数据,因为由于退款,数据最多可以更改X天(我认为是180天)。所以我必须保持它至少那么长的时间。我们正在做一些事情来减轻规模,但我目前仍处于研究/战略领域。是的,问题是数据需要根据事务进行处理。但我不能在处理后转储数据,因为由于退款,数据最多可以更改X天(我认为是180天)。所以我必须保持它至少那么长的时间。我们正在做一些事情来减轻规模,但目前我仍处于研究/战略领域。问题是数据库中的行ID与事务索引不是1:1。有些记录由于各种原因无法存储,因此我必须有一个单独的行来存储这些数据。这是可行的,但我一直在努力避免。可能会从API中保留事务索引?问题是数据库中的行ID与事务索引不是1:1。有些记录由于各种原因无法存储,因此我必须有一个单独的行来存储这些数据。这是可行的,但我一直在努力避免。也许可以从API中保留事务索引?