使用 Shopify API 获取所有产品(超过 50,000)
Fetch all the products (more than 50,000) using the Shopify API
我正在尝试使用 Shopify API 在我的应用中获取 Shopify 商店的所有产品。我有以下代码来逐页获取所有产品。该脚本在某个时间点中断,但我不确定在哪里。我怎样才能制作一个完整的脚本来一次获取所有产品而不会中断。
这是我目前的情况:
$ch = curl_init();
for ($i=1; $i<=1000; $i++)
{
curl_setopt($ch, CURLOPT_URL, "https://API:PASS@store/products.json?page=$i");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
$res = curl_exec($ch);
$res=json_decode($res, true);
foreach($res as $products) { // A different example
foreach($products as $product) {
$title=$product['title'];
}
}
sleep(1);
}
curl_close($ch);
您可能已达到 Shopify API 限价要求。所以你可能需要使用 queues。以下是 Shopify API 限制计算的工作原理:
Shopify 使用漏桶算法,漏桶大小为 40 次调用,泄漏率为每秒 2 次。
它是如何工作的:
- 你每调用一次,虚拟桶的等级就会增加一个
- 桶每半秒泄漏一次,当前水平降低一个
- 只要存储桶有空间,您的呼叫就会立即得到处理,否则您会收到 429 错误
- X-Shopify-Shop-Api-Call-Limit header 将指示当前级别和存储桶大小 'x/40'
这对您的应用意味着什么:
- 您一秒钟最多可以连发 40 个电话。他们都会立即处理
- 一旦达到限制,将需要 500 毫秒才能允许另一个呼叫通过
- 只要您保持在平均每秒 2 次调用以下,您就不会达到限制
- 这实际上每 5 分钟每家商店最多可拨打大约 600 次电话
我正在尝试使用 Shopify API 在我的应用中获取 Shopify 商店的所有产品。我有以下代码来逐页获取所有产品。该脚本在某个时间点中断,但我不确定在哪里。我怎样才能制作一个完整的脚本来一次获取所有产品而不会中断。
这是我目前的情况:
$ch = curl_init();
for ($i=1; $i<=1000; $i++)
{
curl_setopt($ch, CURLOPT_URL, "https://API:PASS@store/products.json?page=$i");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
$res = curl_exec($ch);
$res=json_decode($res, true);
foreach($res as $products) { // A different example
foreach($products as $product) {
$title=$product['title'];
}
}
sleep(1);
}
curl_close($ch);
您可能已达到 Shopify API 限价要求。所以你可能需要使用 queues。以下是 Shopify API 限制计算的工作原理:
Shopify 使用漏桶算法,漏桶大小为 40 次调用,泄漏率为每秒 2 次。
它是如何工作的:
- 你每调用一次,虚拟桶的等级就会增加一个
- 桶每半秒泄漏一次,当前水平降低一个
- 只要存储桶有空间,您的呼叫就会立即得到处理,否则您会收到 429 错误
- X-Shopify-Shop-Api-Call-Limit header 将指示当前级别和存储桶大小 'x/40'
这对您的应用意味着什么:
- 您一秒钟最多可以连发 40 个电话。他们都会立即处理
- 一旦达到限制,将需要 500 毫秒才能允许另一个呼叫通过
- 只要您保持在平均每秒 2 次调用以下,您就不会达到限制
- 这实际上每 5 分钟每家商店最多可拨打大约 600 次电话