首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 同域名對應多 IP 時指定主機存取內容(fsockopen 實作)

     編輯:PHP 綜合知識

當單一域名解析至多 IP(負載平衡),file_get_contents 會隨機分發,無法指定存取某台主機。使用 fsockopen 手動建立 TCP 連線並送出 Host 標頭可解決。

函式 remote_visit

<?php
function remote_visit($ip, $host, $port, $url, $timeout){
    $fp = fsockopen($ip, $port, $errno, $errstr, $timeout);
    if(!$fp) return false;
    $out = "GET ${url} HTTP/1.1\r\n";
    $out .= "Host: ${host}\r\n";
    $out .= "Connection: close\r\n\r\n";
    fputs($fp, $out);
    $response = '';
    while($row = fread($fp, 4096)) $response .= $row;
    fclose($fp);
    $pos = strpos($response, "\r\n\r\n");
    return substr($response, $pos+4); // 只回傳 Body
}
// 使用
echo remote_visit('192.168.100.101', 'demo.fdipzone.com', 80, '/test.php', 90);
echo remote_visit('192.168.100.102', 'demo.fdipzone.com', 80, '/test.php', 90);
echo remote_visit('192.168.100.103', 'demo.fdipzone.com', 80, '/test.php', 90);
?>

前置條件

  • php.ini allow_url_fopen = On
  • 目標主機開放對應 Port(通常 80/443)。

應用場景

  • 健康檢查特定後端節點。
  • 繞過負載平衡器進行定點除錯。
  • 多機房部署時驗證同步內容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved