ホームページ  >  記事  >  バックエンド開発  >  同じドメイン名が複数のIPに対応する場合、リモートWebページのコンテンツを取得するPHPの機能

同じドメイン名が複数のIPに対応する場合、リモートWebページのコンテンツを取得するPHPの機能

WBOY
WBOYオリジナル
2016-06-20 12:35:11754ブラウズ

PHP には、file_get_contents や fopen などの独自の関数を使用するなど、リモート Web コンテンツを取得するさまざまな方法があります。

echo file_get_contents("http://blog.s135.com/abc.php");
?>

ただし、DNS ではクエリなどの負荷分散では、同じドメイン名が複数のサーバー、複数のIPに対応する場合があります。 blog.s135.com が DNS によって 3 つの IP アドレス 72.249.146.213、72.249.146.214、および 72.249.146.215 に解決されるとします。ユーザーが blog.s135.com にアクセスするたびに、システムは次のいずれかのサーバーにアクセスします。負荷分散アルゴリズム。

先週ビデオプロジェクトに取り組んでいたとき、次のような要件に遭遇しました。送信ステータスをクエリするために、各サーバー上の PHP インターフェイス プログラム (abc.php とします) にアクセスする必要がありました。このサーバー。

現時点では、file_get_contents を使用して http://blog.s135.com/abc.php に直接アクセスすることはできません。特定のサーバーに繰り返しアクセスし続ける可能性があるためです。

そして、http://72.249.146.213/abc.php、http://72.249.146.214/abc.php、http://72.249.146.215/abc.php に順番にアクセスする方法を使用して、こちら 3台のWebサーバーに複数の仮想ホストが搭載されている場合も不可です。

ホストは同じドメイン名に対応する複数の IP を設定できないため、ローカルホストを設定することはできません。

これは、PHP および HTTP プロトコルを通じてのみ実現できます。abc.php にアクセスするときに、ヘッダーに blog.s135.com ドメイン名を追加します。そこで、次の PHP 関数を作成しました。

Java code

  1. /************************

  2. * 機能の目的: 同じドメイン名が複数の IP に対応する場合、指定されたサーバーの IP アドレス リモート Web ページのコンテンツ

  3. * 作成時刻: 2008-12-09

  4. * 作成者: Zhang Yan (ブログ) .s135.com)

  5. * パラメーターの説明:

  6. * $ip サーバーの IP アドレス

  7. * $host サーバーホスト名

  8. * $url サーバー URL アドレス (ドメイン名は含まれません)

  9. * 戻り値:

  10. * リモート Web ページのコンテンツを取得しました

  11. * false リモート Web ページへのアクセスに失敗しました

  12. ******** ****************/

  13. function HttpVisit($ip, $host, $url)

  14. {

  15. $errstr = ''; $fp = fsockopen ($ip, 80, $errno, $errstr, 90);

  16. if (!$fp)

  17. { > return false;

  18. $out = "GET {$url} HTTP/1.1rn"; 🎜>

    $out .= "ホスト:{$host}rn";
  19. $out .= "接続: closenrn";
  20. ($fp, $out);
  21. while($line = fread($fp, 4096)){

  22. $response .= $line

  23. } > //ヘッダー情報を削除

  24. $pos = strpos ($response, "rnrn");

  25. $response = substr($pos + 4)

  26. return $response;

  27. } 🎜 >

  28. //メソッドの呼び出し:

  29. $server_info1 = HttpVisit("72.249.146.213", "blog.s135.com", " /abc.php");

  30. $server_info2 = HttpVisit ("72.249.146.214", "blog.s135.com", "/abc.php");

  31. $server_info3 = HttpVisit("72.249.146.215", "blog.s135 .com", "/abc.php");

  32. ?>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:phpとMysql次の記事:phpとMysql