PHP curl_multi_exec 输出到数组

标签 php curl paypal

我正在使用 PayPal 的经典 API,但在 PHP 中从curl_multi 获取结果时遇到困难。到目前为止我的代码是:

<?php
$mh = curl_multi_init();
include('../connect.php');

$sql = "SELECT * FROM transactions ORDER BY ID asc LIMIT 0,2";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
$rid = $row['ID'];
$tid = $row['transID'];

$sandbox = FALSE;

// Set PayPal API version and credentials.
$api_version = '85.0';
$api_endpoint = 'https://api-3t.paypal.com/nvp';
$api_username = 'MY_USER';
$api_password = 'MY_PASS';
$api_signature = 'API_SIGNATURE';

$request_params = array
               (
'USER' => $api_username, 
'PWD' => $api_password, 
'SIGNATURE' => $api_signature, 
'VERSION' => $api_version, 
'METHOD' => 'GetTransactionDetails',
'TRANSACTIONID' => $tid
               );

$nvp_string = '';
foreach($request_params as $var=>$val)
{
   $nvp_string .= '&'.$var.'='.urlencode($val);   
}

${'ch_' . $i} = curl_init();
      curl_setopt(${'ch_' . $i}, CURLOPT_VERBOSE, 1);
      curl_setopt(${'ch_' . $i}, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt(${'ch_' . $i}, CURLOPT_TIMEOUT, 30);
      curl_setopt(${'ch_' . $i}, CURLOPT_URL, $api_endpoint);
      curl_setopt(${'ch_' . $i}, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt(${'ch_' . $i}, CURLOPT_POSTFIELDS, $nvp_string);


    curl_multi_add_handle($mh, ${'ch_'.$i});
    $i++;
}
}
include('../close.php');
    $running = null;
    do {
        curl_multi_exec($mh, $running);
    } while ($running);
?>

这已成功执行,通过注释掉 CURLOPT_RETURNTRANSFER 行进行验证。我无法解决的是如何将返回的数据放入每个记录的数组中。我试过:

$result = curl_multi_exec($mh, $running);
print_r($result);

这会返回一大堆 0 和 1,但不是我需要的详细信息。

有人可以帮忙吗?我的脑子快要爆炸了……

最佳答案

通过将 ${'ch_'.$i} 更改为数组 $ch[$i] 然后使用 curl_multi_getcontent 循环遍历该数组来解决此问题,如下所示:

foreach ($ch as $a)
{
    $result = curl_multi_getcontent($a);
    parse_str($result, $arr);
    print_r($arr);
    echo "--------------------------------------------------\n";
}

然后,我可以获取数组 $arr 中的数据。例如,$arr['EMAIL'];

另请参阅:Curl Multi and Return Transferunderstanding php curl_multi_exec

关于PHP curl_multi_exec 输出到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24324106/

相关文章:

ruby-on-rails - 使用 paypal 定期 gem 升级订阅计划

android - 移动支付库转账问题

javascript - 在按钮按下时动态添加表单元素,这些元素在页面重新加载后保留

php - 更改当天 php css 的背景颜色

curl - libcurl — 保持连接 “open” 以上传多个文件 (FTP)

json - 将 curl POST 与 bash 脚本函数中定义的变量一起使用

iphone - Paypal 错误: FILE SYSTEM CHECK FAILED

php - 对 MySQL 中的记录数进行计数并求平均值

php - CakePHP 3.0 在哪里放置查询

php - curl 多请求分割结果数组