1

我有这个代码,我想用 multi 建立 10 个这样的 curl 连接,但我不知道如何使用这个特定的代码:

代码有什么作用?

  1. 对 .asp 页面进行 curl 请求

  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);
    
4

2 回答 2

2

如果您可以使用最适合您的任何方法来使用十个线程,那就太好了,file_get_contents 最有可能......

https://github.com/krakjoe/pthreads

你可以有线程:)

享受 ...

于 2012-09-19T15:36:19.970 回答
0

多卷曲一开始有时很难掌握,我强烈建议您查看 Pete Wardens PHP https://github.com/petewarden/ParallelCurl实现。这消除了抽象。

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

于 2012-09-19T11:54:04.260 回答