【发布时间】:2016-10-31 18:39:52
【问题描述】:
我正在通过 CURL GET 使用 PHP 连接到 API,我收到了一个包含近 5000 个订单的 json。对于每个订单,我都会进行另一个 CURL GET 并接收订单详细信息(基本上是 2 个 foreach)。之后,我使用 LARAVEL 在数据库中进行了一些插入和更新(基本的东西)。
最大的问题是,对于这 5000 个订单,我的加载时间将近一小时。我需要每晚(超过 5000 个)使用 cron 来完成此操作。
我有一个具有 2GB 内存和 2 个核心处理器的云解决方案。
我也尝试过 Zebra Curl,但不能在 curl 请求中使用它。
【问题讨论】:
-
1) 这个 CRON 是否必须每天运行一次才能获得 5000?它可以每小时运行一次以获取约 200 个订单吗?我的建议是尽可能让它每小时运行多次,添加到队列中,然后让另一个 CRON 以稳定的速率处理队列。
-
您可以使用multi-curl一次执行多个下载。
-
这只是一个拥有 5000 个订单的组织。我需要 40-50 个组织——每晚。这是一个有趣的想法,排队等候约 200 人。 @yergo:第二个 curl 需要第一个 curl 的响应 - 我不能使用 multi-curl。
-
您可以使用单卷曲下载订单列表,而不是在多卷曲中下载每个请求的特定订单。要么是可行的,要么你提供的信息太少。也许您可以分享一些代码和请求结构,以便我可以进一步提供帮助?
-
我假设您的 API 请求中有某种标识符,仅返回某个 ID 或时间戳之后的结果。如果是这种情况,那么您可以将其设置为每 15 分钟运行一次,它将抓取大约 50 行。然后你的 CRON 可以每分钟运行一次,每次运行处理 2-3 个。这样一来,处理就分散在一天中,而不是每天进行一次非常紧张的工作。
标签: php api laravel curl optimization