2011-01-25 78 views
3

我正在通过PHP cURL调用PayPal的TransactionSearch API。PHP API访问多个呼叫

不幸的是,API响应速度非常慢,有时从一个客户的30秒到超过5分钟(取决于从API返回的记录的数量)。

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

本质上,我需要同时运行(和处理)多个API调用。达到此目的的最佳方式是什么?

+0

回答这个线程[多个API请求(https://stackoverflow.com/questions/34538046/multiple-api的-calls-IN-A级/ 47068115#47068115) – Delickate

回答

1

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

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

0

我建议看看多线程你的过程,这里有一个good Stack question有一些很好的例子来说明如何做到这一点。

0

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

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

  2. 创建与在命令行给出一个JSON字符串 paramters执行循环,并呼吁curlWorker.php一个主要的cron文件myCron.php:

    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