多个PHP cUrl发布到同一页面

ehi*_*ime 5 php xml post curl get

因此要点是,我需要将XML数据查询发布到网关页面以接收XML响应,稍后再进行解析,该Web服务可以有3-60个查询,现在我不得不运行一个简单的循环并一次做一个。在响应方面,我只需要响应中的1行(或最多5行),第2行是我需要包含图像数据的第一行。因此,我希望能够选择所有可能读取的行。

正如我在基本的for循环中所说的那样,我创建了一个简单的“读入”函数,这是我当前正在使用并且想要修改的代码。

$ part1 ='XML开头'; $ part2 = XML End';
$ posts = array(0 =>'SC-010052214',1 =>'SC-000032972',2 =>'SC-012535460',3 =>'SC-011257289',4 =>'SC-010134078') ;


 $ ch = curl_init();

  curl_setopt($ ch,CURLOPT_URL,'http://example.com/index.php');
  curl_setopt($ ch,CURLOPT_RETURNTRANSFER => 1);
  curl_setopt($ ch,CURLOPT_POST,1);

 $ count = count($ posts);
 for($ i = 0; $ i <$ count; $ i ++){

  curl_setopt($ ch,CURLOPT_POSTFIELDS,“有效载荷= $ part1 {$ posts [$ i]} $ part2”);
  $ return [] = curl_exec($ ch);

  }
 curl_close($ ch); 

print_r($ return);

限制:不幸的是,我不能使用?post = $ data0&post = $ data1&post = $ data3,因此我需要一个更好的解决方案。除此之外,我想看看这里可以进行哪些改进。

ehi*_*ime 0

由于反应速度有限,

<?php

函数 m_curl($input) {

        // 编译可用位置的查询
        foreach($input['content'] as $pos=>$item) {
            $query = '<childDetailQuery><请求><查询替换>';
            $query .= "<item_number>{$item}</item_number>";

                    $query .= (isset($input['story']) && $input['story'] != NULL)
                                ?"<story_type>".$input['story']."</story_type>"
                                : '<story_type>简短</story_type>';

                    $query .= (isset($input['party']) && $input['party'] != NULL)
                                ?"<party_number>".$input['party']."</party_number>"
                                : '';

            $query .= "</query-replacement><latency-tolerance>NONE</latency-tolerance>";
            $query .= '</request></childDetailQuery>';

        $查询[] = $查询;
                取消设置($查询);
        }


        // 确保滚动窗口不大于 url 数量
        $限制= 10;
        $limit = (sizeof($queries) < $limit) ? sizeof($queries) : $limit;

        $master =curl_multi_init();
        $curl_arr = 数组();

            // 在这里添加额外的卷曲选项
            $std_options = 数组(
                CURLOPT_RETURNTRANSFER => 1,
                CURLOPT_FOLLOWLOCATION => 1,
                CURLOPT_MAXREDIRS => 0,
            );

        $选项=($选项)?($std_options + $coptions) : $std_options;

        回显$输入['位置'];
        // 开始第一批请求
        for ($i = 0; $i < $limit; $i++) {
            $ch=curl_init();

                $options[CURLOPT_POSTFIELDS] = "payload=".$queries[$i];

            curl_setopt_array($ch,$options);
            curl_multi_add_handle($master, $ch);
        }

        做 {
            while(($execrun =curl_multi_exec($master, $running)) == CURLM_CALL_MULTI_PERFORM);
                if($execrun != CURLM_OK) {
                                    echo '卷曲错误'; 休息;
                }


            // 一个请求刚刚完成——找出是哪一个
            while($done =curl_multi_info_read($master)) {
                $info =curl_getinfo($done['handle']);
                if ($info['http_code'] == 200) {
                    $output=curl_multi_getcontent($done['handle']);

                    // 请求成功。使用回调函数处理输出。
                    parse_returns($输出);

                    // 启动一个新请求(在删除旧请求之前执行此操作很重要)
                    $ch=curl_init();
                    $options[CURLOPT_POSTFIELDS] = "payload=".$queries[$i++]; // 增加 i
                    curl_setopt_array($ch,$options);
                    curl_multi_add_handle($master, $ch);

                    // 移除刚刚完成的curl句柄
                    curl_multi_remove_handle($master, $done['handle']);

                } 别的 {

                    echo '失败于:'; var_dump($信息);
                    echo '带有选项:'; var_dump($选项);

                    // 请求失败。添加错误处理。
                }
            }
        while ($running);

        curl_multi_close($master);
        返回假;
}

函数 parse_returns($data) {
    print_r($数据);
}

// 设置查询数量
$数据=数组(
    0 => 'SC-010052214',
    1 => 'SC-000032972',
    2 => 'SC-012535460',
    3 => 'SC-011257289',
    4 =>“SC-010134078”
);

// 设置选项数组
$选项=数组(
    '位置' => 'http://ibudev.wvus.org/websvc/actions/wvsMessageRouter.php',
    '阅读行' => 2,
    'coptions' => NULL,
    '内容' => $数据,
    '故事' => '完整',
    '派对' => NULL,
);


m_curl($选项);

?>