PHP API访问多个调用

时间:2011-01-25 15:18:24

标签: php api curl

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

不幸的是,API的响应速度很慢,有时需要30秒到5分钟以上(取决于从API返回的记录数)。

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

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

3 个答案:

答案 0 :(得分:1)

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

这不是最快的解决方案,它可以在多个线程中提供响应时立即处理响应,但这种方法可以使处理速度提高50倍而不会发生重大变化。

答案 1 :(得分:0)

我建议您查看多线程处理过程,这是一个good Stack question,它有一些很好的例子来说明如何实现这一点。

答案 2 :(得分:0)

使用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中提及该变量