【问题标题】:How to manage multiple API calls in PHP?如何在 PHP 中管理多个 API 调用?
【发布时间】:2015-06-19 01:07:57
【问题描述】:

我想管理对一个 API 的多次调用。我有一个数据数组,并且在调用 API 时使用数组的每个元素并回显响应。该架构遵循以下方式:

<?php
    ini_set('max_execution_time', 300);//Did as loop takes >30s
    require_once 'other/VirusTotalApiV2.php';
    $obj= new VirusTotalAPIV2("abc");//Forming object of API
    $handle=fopen("foo.txt","r"); // Obtaining the elements    

    while($read=fgets($handle))//Each line stores an element
    {
    $counter=0;
    $report=$obj->getFileReport($read);//Calling API function
    //var_dump($report);
    echo "<table>
        <tr>
        <td>Antivirus</td>
        <td>Result</td>
        <td>Update</td>
        </tr>";
    foreach($report->scans as $key=>$value){
        echo "<tr>";
        echo "<td>".$key."</td>";
        echo "<td>".result($value->result)."</td>";
        echo "<td>".$value->update."</td>";
        echo "</tr>";
        $counter++;
    }
}
echo $counter;
fclose($handle);
function result($input){
    if($input==null)
    {
        return "No Issue";
    }
}

我能否像目前一样提高此调用的效率,最终输出在 10 秒到 15 秒后(立即)收到,直到那个时间页面继续加载。 请提出一些更好的出路。

【问题讨论】:

  • 到底是什么问题?这怎么不像预期的那样工作?从代码的外观来看,它似乎并没有特别低效。
  • @David 我已经粘贴了原始代码。当我执行此代码时,它会在 10 多秒内返回结果。直到那个时候,页面一直在加载。我想摆脱这个,因为我想在超过 100 个元素时大规模地这样做。
  • 这听起来像是应该在后台进程中发生的事情,而不是在加载页面时。长时间运行的进程不应阻塞 UI。
  • @David 即使我使用 ajax 调用,它也会在后台发生,但仍然需要 10-15 秒才能返回数据。我关心的是提高调用 API 的效率以获得更快的结果。
  • 如果下面的curl_multi 建议不起作用,您可能需要使用线程:php.net/manual/en/intro.pthreads.php

标签: php


【解决方案1】:

不确定 HTTP 客户端正在使用什么,但假设它是 cURL 的包装器,您可以查看 curl_multi

允许异步处理多个 cURL 句柄。

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2016-01-03
    • 2016-06-25
    • 2023-03-08
    相关资源
    最近更新 更多