1

私はこのコードを持っていて、マルチでこのように10個のカール接続を作成したいのですが、この特定のコードでそれを行う方法がわかりません。

コードは何をしますか?

  1. .aspページにcurlrequiestを作成します

  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を使用して10個のスレッドを作成できればよいでしょう...

https://github.com/krakjoe/pthreads

あなたはスレッドを持つことができます:)

楽しみ ...

于 2012-09-19T15:36:19.970 に答える
0

マルチカールは最初は理解しにくい場合があります。PeteWardensPHPhttps://github.com/petewarden/ParallelCurlの実装を確認することをお勧めします。これにより、抽象化が失われます。

基本的に、ダウンロードが完了したときに起動するコールバック関数を実装する必要があります。たとえば、一時ディレクトリに書き込むと、すべてが完了すると、メインプログラムはコンテンツをチェックし、そこから処理できます。

于 2012-09-19T11:54:04.260 に答える