PHP API访问多个调用

PHP API访问多个调用,php,api,curl,Php,Api,Curl,我正在通过PHP cURL调用PayPal的TransactionSearch API 不幸的是,API的响应速度非常慢,对于单个客户,有时需要30秒到5分钟以上(取决于API返回的记录数) 目前,该脚本正在运行一个cron作业,并逐个遍历每个客户。但是,如果客户数量增加,整个过程将需要很长时间(几个小时)才能完成。这还不够好 本质上,我需要同时运行(和处理)多个API调用。实现这一点的最佳方法是什么?我建议您研究多线程流程,下面是一个例子,其中有一些关于如何实现这一点的好例子 由于瓶颈是远程服

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

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

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


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

我建议您研究多线程流程,下面是一个例子,其中有一些关于如何实现这一点的好例子

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


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

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

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

  • 创建一个主cron文件myCron.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 }'
    
  • 但是,您应该监视可以在服务器上执行的并行执行程序的数量, 并在主cron文件myCron.php中提到该变量

  • 这条线索的答案