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
/************************
* 機能の目的: 同じドメイン名が複数の IP に対応する場合、指定されたサーバーの IP アドレス リモート Web ページのコンテンツ
* 作成時刻: 2008-12-09
* 作成者: Zhang Yan (ブログ) .s135.com)
* パラメーターの説明:
* $ip サーバーの IP アドレス
* $host サーバーホスト名
* $url サーバー URL アドレス (ドメイン名は含まれません)
* 戻り値:
* リモート Web ページのコンテンツを取得しました
* false リモート Web ページへのアクセスに失敗しました
******** ****************/
function HttpVisit($ip, $host, $url)
{
$errstr = ''; $fp = fsockopen ($ip, 80, $errno, $errstr, 90);
if (!$fp)
{ > return false;
$out = "GET {$url} HTTP/1.1rn"; 🎜>
$out .= "ホスト:{$host}rn";return $response;
} 🎜 >
//メソッドの呼び出し:
$server_info1 = HttpVisit("72.249.146.213", "blog.s135.com", " /abc.php");
$server_info2 = HttpVisit ("72.249.146.214", "blog.s135.com", "/abc.php");
$server_info3 = HttpVisit("72.249.146.215", "blog.s135 .com", "/abc.php");
?>