【问题标题】:PHP API acess multiple callsPHP API 访问多个调用
【发布时间】:2011-06-15 06:37:36
【问题描述】:

我正在通过 PHP cURL 调用 PayPal 的 TransactionSearch API。

很遗憾,API 的响应速度非常慢,对于单个客户,有时需要 30 秒到 5 分钟以上(取决于从 API 返回的记录数)。

目前,该脚本正在运行一项 cron 作业,并逐个遍历每个客户。但是,如果客户数量增加,整个过程将需要很长时间(几个小时)才能完成。这还不够好。

基本上,我需要同时运行(和处理)多个 API 调用。实现这一目标的最佳方法是什么?

【问题讨论】:

标签: php api curl


【解决方案1】:

由于瓶颈是远程服务器,我建议使用curl_multi_exec。您将一次处理大量 HTTP 连接,然后在一个线程中处理它们的结果。

这不是最快的解决方案,它是在响应在多个线程中可用时立即处理它们,但这种方法可以使处理速度提高 50 倍以上,而无需进行重大更改。

【讨论】:

    【解决方案2】:

    我建议研究多线程您的进程,这是一个good Stack question,其中有一些很好的例子来说明如何实现这一点。

    【讨论】:

      【解决方案3】:

      使用 PHP ,这是一种使它具有多个进程的简单方法:

      1. 创建一个文件 curlWorker.php : 这处理 CURL 请求并跟踪结果(例如在数据库中)。 它通过命令行获取所需的参数作为解码的json字符串 在脚本中。

      2. 创建一个主 cron 文件 myCron.php,它执行循环并调用 curlWorker.php 在命令行中以 json 字符串形式给出的参数:

          for Data-to-process { 
            $cmd = "usr/bin/php  path-to-curlWorker.php  '$jsonStringParamters' > 
                    /dev/null 2>/dev/null &";        
        
            exec($cmd);
         }    
        
         // example : /usr/bin/php  curlWorker.php  '{ "uid" : "abc123" , "amount" : 20.3 }'
        
      3. 但是,您应该监控可以在服务器上执行的并行执行数量, 并在您的主 cron 文件 myCron.php 中提及该变量

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-08
        • 2017-10-23
        • 2015-08-24
        • 2014-02-21
        • 1970-01-01
        • 2019-07-26
        • 2015-02-09
        • 1970-01-01
        相关资源
        最近更新 更多