4

私は PHP を使用しており、Web から URL コンテンツを解析しています。その file_get_contents(url) と curl には 2 つのメソッドがあることを知っています。カールにはより多くのオプションがあることを知っているので、それを使用していますが、カールの背後にあるプロセスを知りたかっただけです。スクラッチからcurlリクエストを行うときの仕組み

4

3 に答える 3

4

PHP cURL パッケージは、PHP で cURL/libcurl API (C で記述) を公開するだけです。cURL は、あらゆる種類のプロトコル間でデータを移動するのに非常に便利で、多くの便利なオプションがあります。一方、file_get_contents は基本的な PHP ファイル操作の 1 つであり、カーネルに依存して要求されたリソースを見つけようとします。通常、cURL の方が適していますが、多くの場合、数行のコードが必要になります。file_get_contents() に関する問題の 1 つは、場合によっては要求が行われた後も接続が開いたままになるため、要求がタイムアウトするまで関数呼び出しによってスクリプトがブロックされ、多くの遅延が発生する可能性があることです。

参考文献:

http://php.net/manual/en/book.curl.php

http://en.wikipedia.org/wiki/CURL

http://www.php.net/manual/en/ref.filesystem.php

于 2012-09-06T06:05:13.473 に答える
3

curlは、サポートされているプロトコル(HTTP、HTTPS、FTP、GOPHER、DICT、TELNET、LDAP、またはFILE)のいずれかを使用して、サーバーからドキュメント/ファイルを取得したり、サーバーにドキュメントを送信したりするクライアントです。このコマンドは、ユーザーの操作や操作を行わなくても機能するように設計されています。

curlは、プロキシサポート、ユーザー認証、ftpアップロード、HTTPポスト、SSL(https :)接続、Cookie、ファイル転送再開などの便利なトリックのバスロードを提供します。

例:

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
            'lname'=>urlencode($last_name),
            'fname'=>urlencode($first_name),
            'title'=>urlencode($title),
            'company'=>urlencode($institution),
            'age'=>urlencode($age),
            'email'=>urlencode($email),
            'phone'=>urlencode($phone)
        );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

詳細については、次の参照を使用してください。

  1. 例を使用したカールの紹介

  2. cURLを使用してHTTPジョブを自動化する

  3. カールの例

これがお役に立てば幸いです。

于 2012-09-06T06:03:06.233 に答える
1

Curl は基本的に REST リクエストを作成するために使用します。

curl を使用した投稿リクエストの簡単な例を次に示します。

        $curl_handle=curl_init();
        curl_setopt($curl_handle,CURLOPT_URL,$GLOBAL_SMS_URL);
        curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,20);
        curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
        $buffer = curl_exec($curl_handle);
        curl_close($curl_handle);
        $getit =  json_decode($buffer, true);

コードの最初の行は、リモート URL $GLOBAL_SMS_URL (私の場合) を定義している 2 行目のカールを初期化するために使用されます。

3行目はタイムアウトを秒単位で定義しています

私は4行目にヘッダーを渡しています

カールボディを渡したい場合は、これを使用することが重要です

 curl_setopt($curl_handle, CURLOPT_POSTFIELDS,$json);

$json には curl リクエストの本文が含まれます

または、URLに沿っていくつかのパラメーターを渡したい場合

        $data = array(
                "Username" => "56y5768",
                "Pwd" => "tr54656y",
                "PhoneNumber" => $phone,
                "PhoneMessage" => $text
        );
        $getdata =  http_build_query($data) . "\n";
        $GLOBAL_SMS_URL = $SMS_API_BASE_URL.$getdata;

それが役に立てば幸い

于 2012-09-06T06:08:27.923 に答える