PHPネットワークプログラミング

WBOY
リリース: 2016-06-23 13:12:57
オリジナル
1029 人が閲覧しました

(1) ファイルにアクセスして他の Web サイトにアクセスする:

Web サイトの URL アドレスは実際には Web ページ ファイルのパスなので、ファイルを開くことで Web ページのファイルを開くことができます。

その後、その内容を独自のファイルに書き込むことができます。このようにして、複数の Web サイトから興味のあるコンテンツを検索し、それを自分のドキュメントに保存できます。

たとえば、次のメソッドを実装できます:

$url_list = file("http://www.baidu.com/");$demo_web = fopen("demo_web.php",'a');foreach($url_list as $one_list){    fwrite($demo_web,$one_list);}fclose($url_list);
ログイン後にコピー

(2) URL の PHP 解析:

URL の基本コンポーネント: プロトコル名 (スキーム)、ホスト名 (ホスト)、ポート番号 ( port)、ファイルパス (path)、クエリパラメータ (クエリ)

php は、parse_url() 関数を使用して URL を解析し、解析する必要がある URL をパラメータとしてこの関数に渡すことができます。この関数は、 URLを配列に変換します。

配列内の各キー値の名前と対応する意味は、上でリストした「基本的な要素」です。

例: $demo = parse_url("http://www.example.com/index.php");

$demo['host'] は "www.example.com" $demo['path' 】index.phpです

(3) PHPソケットプログラミング:

ソケット操作の基本的な仕組み:

サーバーとクライアントで通信するためのソケットを構築します。

サーバー側: サーバーは最初にソケットを初期化し、次にポートをバインドし、次にポートを監視し、最後に accept を呼び出してサーバー側のソケットをブロックし、クライアントのソケット接続を待ちます。

クライアント: まずソケットを初期化し、次にブロックされたサーバー側のソケットに接続します。接続が成功すると、クライアントとサーバー間の接続が確立されます。

クライアントがデータリクエストを送信し、サーバーがリクエストを受信して​​処理し、その後、応答データをクライアントに送信し、クライアントがデータを読み取り、最後に接続を閉じます。このようにして、インタラクションは終了します。

PHP でソケットを開きたい場合は、fsockopen() 関数を使用する必要があります。

fsockopen() 関数のパラメータは、URL、ポート番号、エラー番号を格納する変数、エラーメッセージ文字列を格納する変数、タイムアウト待ち時間です。 (最初のパラメータのみが必要です)。

この fsockopen() 関数は fopen() 関数と同様に、取得するのはファイルポインタなので、 fwrite() などの関数を使ってファイルを操作することもできます

fsockopen() を使用して接続を確立した後、 fwrite( ) 関数を使用すると、次のようなデータがサーバーに書き込まれます。

$fp = fsockopen("www.example.com",80,$errno,$errstr,30);if(!$fp){    echo "连接失败";}else{    $send = "HEAD /HTTP/1.1\r\n";    $send .= "HOST: www.example.com\r\n";    $send .= "CONNECTION: Close\r\n\r\n";    fwrite($fp,$send);        $data = fgets($fp,128);  //检索HTTP头的128个字符串    fclose($fp);  //关闭socket        //用explode函数将$data从空格处打散为两个字符串,再由list函数将前一个字符串赋值给$response变量,将后面的字符串赋值给$code字符串。    list($response,$code)= explode(' ',$data);}
ログイン後にコピー

上記のコードについて:

1. $fp に書き込まれる $send 文字列は、実際には「一連の HTTP プロトコル ヘッダーを使用して通信を開始します」 process"、たとえば、「HEAD/HTTP/1.1rn」です。HEAD はリクエスト タイプです。もちろん、GET または POST を使用してリクエストすることもできます。次の rn は形式を満たすためのものです。 (同様に、以下の $send に追加された 2 つの文字列も HTTP プロトコル ヘッダーです)

2. fwrite を通じて HTTP ヘッダーを送信した後、$fp は独自の HTTP ヘッダーを返し、それを fgets() 関数を通じて読み取ります。 $data のスペースの後の文字列が $code に割り当てられます。

そして、この $code は HTTP ステータス コードです。ステータス コードが 200 の場合のみ、URL が利用可能であることを意味します。それ以外の値のステータス コードは問題があることを意味します。

(4) cURL の使用:

cURL の機能は、単に手動でページを閲覧する代わりに、cURL を使用して http リクエスト機能を改良することができます。

php は、shell_exec() やその他の関数を通じて cURL を呼び出すことができ、cURL クラス ライブラリ: libcurl もあります。 操作手順は次のとおりです:

1. アクセスする URL をパラメータとして指定して、curl_init() を呼び出します。 cURL トランザクションを開始するには

$cur = curl_init('www.example.com');
ログイン後にコピー

この関数は cURL トランザクションのポインタを返します。次のステップは、このトランザクションのポインタを操作することです。

2. 次に、トランザクションのオプションを設定するために、curl_setopt() 関数を複数回呼び出す必要があります (設定できるオプションが多すぎるため、ここでは 1 つずつ説明しません)。

curl_setopt($curl,"可设置的选项",value);
ログイン後にコピー

3. セットアップが完了しました。すべてのオプションを実行した後、curl_exec() 関数を使用してトランザクションを実行し、返されたデータを変数に割り当てます:

$result = curl_exec($curl);
ログイン後にコピー

4. 最後に、リンクを閉じます。

curl_close($curl);
ログイン後にコピー

一般的に使用される設定オプションをいくつか示します:

1. エラーが発生した場合に cURL に実行を停止するように指示します:

curl_setopt($curl,CURLOPT_FAILONERROR,1);
ログイン後にコピー

2. タイムアウトを設定します:

curl_setopt($curl,CURLOAPT_TIMEOUT,5);
ログイン後にコピー

3.使うデータを送信するための POST メソッド:

curl_setopt($curl,CURLOAPT_POST,1);
ログイン後にコピー

4. POST によって送信されるデータを設定します:

curl_setopt($curl,CURLOAPT_POSTFIELDS,'name=小明&age=12');
ログイン後にコピー

(ヒント: cURL ツールは、Cookie の送受信、ファイルのアップロードの処理、SSL 接続による作業、および FTP の処理も行うことができます)ファイル)

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート