将此curl转换为多PHP

时间:2012-09-18 23:13:44

标签: php curl

我有这个代码,我希望用多个这样的10个卷曲连接,但我不知道如何使用这个特定的代码:

代码的作用是什么?

  1. 对.asp页面进行卷曲处理

  2. 使用结果以表格形式发送一些数据($ ciudad),然后页面获得此提交并发出内部请求并显示结果。

  3. 输出最终结果。

    function curl($header,$encoded,$cookie){
      $options = array(
        CURLOPT_USERAGENT       => $_SERVER['HTTP_USER_AGENT'],
        CURLOPT_TIMEOUT         => 120,    
        //CURLOPT_REFERER           => '',
        //CURLOPT_HTTPHEADER        => $header,
        CURLOPT_COOKIE          =>  $cookie,
        CURLOPT_POST            => true,
        CURLOPT_POSTFIELDS      => $encoded,
        CURLOPT_RETURNTRANSFER  => true,     
        CURLOPT_HEADER          => false,    
        CURLOPT_FOLLOWLOCATION  => true,     
      );
      $ch = curl_init("http://procesos.ramajudicial.gov.co/consultaprocesos/consultap.aspx"); 
      curl_setopt_array( $ch, $options );
      $output = curl_exec($ch); 
      curl_close($ch);
      return $output;
    }
    
    $cookie = "";
    foreach($_COOKIE as $k => $v)
      $cookie .= $k."=".$v.";";
      $cookie = substr($cookie,0,strlen($cookie)-1);
    
      $encoded = '';
      foreach($_POST as $name => $value) {
        $encoded .= urlencode($name).'='.urlencode($value).'&';
      }
    
      $lk = "http://procesos.ramajudicial.gov.co/consultaprocesos/";
    
      $header[] = 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'];
      $header[] = 'Accept: text/xml,application/xml,application/xhtml+xml,text /html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
      $header[] = 'Accept-Language: en-us,en;q=0.5'; 
      $header[] = 'Accept-Encoding: gzip,deflate'; 
      $header[] = 'Connection: keep-alive';
      $header[] = 'Cookie : '.$cookie;
      $header[] = 'Content-Type: application/x-www-form-urlencoded';
    
      $output = curl($header,$encoded,$cookie);
    
      $CIUDAD = urlencode("Medellin"); // to change
      $CORPORACION = urlencode("JUZGADOS CIVILES MUNICIPALES DE MEDELLIN"); // to change
      $DIGITOS = $numsus; 
    
      // BEGIN STEP 1
      $__VIEWSTATE = 'id="__VIEWSTATE" value="';
      $i = stripos($output,$__VIEWSTATE) + strlen($__VIEWSTATE);
      $j = stripos($output,'"',$i);
      $__VIEWSTATE = substr($output,$i,$j-$i);
    
      $__EVENTVALIDATION = 'id="__EVENTVALIDATION" value="';
      $i = stripos($output,$__EVENTVALIDATION) + strlen($__EVENTVALIDATION);
      $j = stripos($output,'"',$i);
      $__EVENTVALIDATION = substr($output,$i,$j-$i);
    
      $encoded = '__EVENTTARGET=DropDownList1&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE='.urlencode($__VIEWSTATE).'&__EVENTVALIDATION='.urlencode($__EVENTVALIDATION).'&DropDownList1='.$CIUDAD.'&TextBox13=';
    
      $output = curl($header,$encoded,$cookie);
    

2 个答案:

答案 0 :(得分:2)

如果您可以使用最适合您的10个线程,最好是file_get_contents,这将是一件好事。

https://github.com/krakjoe/pthreads

你可以拥有主题:)

享受......

答案 1 :(得分:0)

一开始有时很难掌握多卷曲,我可以热烈建议您查看Pete Wardens PHP https://github.com/petewarden/ParallelCurl的实施情况。这取消了抽象。

您基本上需要实现一个回调函数,以便在下载完成时触发。例如,写入临时目录,当它完成后,您的主程序可以检查内容并从那里处理它。