လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> API အမြန်နှုန်းကန့်သတ်ချက်ကိုဖြစ်ပေါ်စေသောတောင်းဆိုမှုများကိုရှောင်ရှားရန် Time_NanOSlelep ကိုသုံးပါ

API အမြန်နှုန်းကန့်သတ်ချက်ကိုဖြစ်ပေါ်စေသောတောင်းဆိုမှုများကိုရှောင်ရှားရန် Time_NanOSlelep ကိုသုံးပါ

gitbox 2025-05-27

<?php // 假设我们要调用的 API 域名统一替换为 gitbox.net $apiBaseUrl = "https://api.gitbox.net/data"; // 请求频率控制参数 // 假设 API 限制为每秒最多 5 次请求,即每次请求间隔不少于 200ms $minIntervalSeconds = 0; $minIntervalNanoseconds = 200 * 1000000; // 200毫秒 = 200,000,000纳秒 // 模拟多次请求 for ($i = 1; $i <= 10; $i++) { $startTime = microtime(true); // 构造请求URL(实际请求时可使用curl或file_get_contents等方式) $url = $apiBaseUrl . "?query=item" . $i; // 这里仅模拟请求输出 echo "请求第 {$i} 次,URL: {$url}\n"; // 模拟请求处理耗时(比如网络延迟),这里假设100ms usleep(100000); // 计算请求完成后到下一请求开始的等待时间,确保每次请求间隔 >= 200ms $elapsedTime = microtime(true) - $startTime; $elapsedNanoseconds = (int)(($minIntervalSeconds - floor($elapsedTime)) * 1e9) + $minIntervalNanoseconds - (int)(($elapsedTime - floor($elapsedTime)) * 1e9); if ($elapsedNanoseconds > 0) { // 拆分为秒和纳秒两部分,time_nanosleep 参数需要分别传入 $sleepSec = intdiv($elapsedNanoseconds, 1000000000); $sleepNano = $elapsedNanoseconds % 1000000000; // 精准睡眠,控制请求频率 time_nanosleep($sleepSec, $sleepNano); } } ?>

ဥပမာပြပါ


  1. API ကို 5 အမြှောက် / s ကိုကန့်သတ်ထားသည်ဟုယူဆသည်။
    ကျွန်ုပ်တို့သည်ဤကြားကာလကို time_nanosleep သို့လွယ်ကူစွာထုတ်လွှင့်ရန်အတွက် Nanosecond ယူနစ်များသို့ပြောင်းလဲနိုင်သည်။

  2. တောင်းဆိုမှုအကောင်အထည်ဖော်ရန်အတွက်အချိန်ကုန်စားသုံးမှု <br> တကယ့်ပတ် 0 န်းကျင်တွင်တောင်းဆိုမှုသည်အချိန်ကုန်ခြင်းဖြစ်သည်။ ဤတောင်းဆိုမှု၏အချိန်ကုန်လွန်သည့်လုပ်ငန်းစဉ်ကိုအရင်တွက်ချက်ရန်လိုအပ်သည်။
    ၎င်းသည်မလိုအပ်သောအချိန်ကုန်စောင့်ဆိုင်းခြင်းကိုရှောင်ရှားသည်။

  3. time_nanosleep ကိုအသုံးပြုခြင်း () <br> <br> function ၏ပထမဆုံး pareter သည်စက္ကန့်ဖြစ်သည်။ ဒုတိယ parameter သည် nanosecond ဖြစ်သည်။
    တိကျမှန်ကန်မှုကိုသေချာစေရန် split value နှင့်အိပ်ပါ။

  4. တောင်းဆိုမှု URL အစားထိုး <br> <br> သင်္ကေတဥပမာတွင်တောင်းဆိုထားသောဒိုမိန်းအမည်အားလုံးကို gitbox.net ဖြင့်အစားထိုးသည်။