簡體   English   中英

使用php在循環內調用API

[英]Calling API inside the loop using php

我正在尋找在循環內調用 API 的任何最佳和最快的方法,例如下面是我當前的代碼,但我認為這不是好方法,因為通過這種方式 API 被調用了 100 秒,因為它在 php 循環下。 無論如何我可以在外面使用它嗎? 但問題是我必須傳遞一些僅在循環中的唯一值。

$sql_q = sqlsrv_query($mssql, "SELECT * FROM Table WHERE Club='123'");
   while($sql_f = sqlsrv_fetch_array($sql_q)){
        
    / Calling API TO Check Status
    $auth = curl_init();
    curl_setopt_array($auth, array(
    CURLOPT_URL => "http://api.checkstatus.com/apiurl",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS =>"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n  <soap:Body>\r\n    <CheckStatus xmlns=\"http://apiurl.info/\">\r\n      <UserID>".$ql_f['ID']."</UserID>\r\n </CheckStatus >\r\n  </soap:Body>\r\n</soap:Envelope>",
    CURLOPT_HTTPHEADER => array(
    "Content-Type: text/xml"
    ),
    ));
    $authres = curl_exec($auth);
    curl_close($auth);
    
    }

你需要建立一個調度機制

例如:

  1. 創建要傳遞給 API 的 ID 隊列(MySQL 表就可以)
  2. 編寫一個腳本,從隊列中取出第一項並進行 API 調用。
  3. 調用后,從隊列中移除 ID 或將其標記為完成
  4. 使用例如 cron 來安排腳本被調用的頻率
  5. 根據您的業務邏輯創建另一個管理隊列的腳本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM