phpコンテキスト(Context)の説明

2852 ワード

phpのコンテキストは様々なファイルストリームとデータストリームに使用することができ、使用者がデータの取得に対して個性的な需要とより細かい制御を達成することができる.
たとえば、ページの内容をキャプチャする場合、file_を使用するのが最も簡単です.ゲットするcontentsメソッド
$html = file_get_contents('http://blog.csdn.net');  //  csdn    
このようにget方式でアクセスするだけではpost方式でページをキャプチャすることはできないようですが、このとき私たちは一般的に機能の強いcurl処理に変えます.実はfile_ゲットするcontentsもPOSTメソッドを使用できます.phpのコンテキスト(Context)を使用して制御します.ここではまずページをキャプチャされたページとして用意します.コードは簡単です.

Contextの使用:
 'jerry'
);

$opts = array(
    'http' => array(
        'method' => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($post)
    )
);

$context = stream_context_create($opts);   //       

echo file_get_contents('http://127.0.0.1:8080/data.php', NULL, $context);
実行結果
POST: name=jerry
contextを作成するパラメータは多く、optsのフォーマットは次のとおりです.  $arr['wrapper'['option']=$valueで、wrapperはサポートされている複数のパッケージプロトコルの1つであり、現在は以下のいくつかをサポートしています.
Socket context options — Socket context option listingHTTP context options — HTTP context option listingFTP context options — FTP context option listingSSL context options — SSL context option listingCURL context options — CURL context option listingPhar context options — Phar context option listingMongoDB context options — MongoDB context option listingContext parameters — Context parameter listingZip context options — Zip context option listing
各wrapperのoptionは異なります.具体的には、マニュアルの各wrapperがサポートしているパラメータを参照してください. http://php.net/manual/zh/context.php
contextの作成時に$optionsを指定するほか、contextを作成することもできます. あとで使う ストリームcontext_setoption関数設定$options
たとえば:
$post = array(
    'name' => 'jerry'
);

$opts = array(
    'http' => array(
        'method' => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($post)
    )
);

$context = stream_context_create();
stream_context_set_option($context, $opts);
ローカル指定ポートを使用してサーバに接続する例(指定しない場合は、使用可能なポートをランダムに使用してサーバに接続します):
// connect to the internet using port '7000'
$opts = array(
    'socket' => array(
        'bindto' => '0:7000',
    ),
);


// create the context...
$context = stream_context_create($opts);

// ...and use it to fetch the data
echo file_get_contents('http://www.example.com', false, $context);
That's it!