ホームページ > バックエンド開発 > PHPチュートリアル > fsockopen関数の例外を解決する方法

fsockopen関数の例外を解決する方法

WBOY
リリース: 2016-06-13 12:44:49
オリジナル
1056 人が閲覧しました

fsockopen 関数エラーの解決方法

<?<br />
//获取文件大小<br />
function remote_filesize($url_file){<br />
    if (!remote_file_exists($url_file)) return false;<br />
    $headInf = get_headers($url_file,1);<br />
    return $headInf['Content-Length'];<br />
}<br />
//判断文件是否存在<br />
function remote_file_exists($url_file){ <br />
    $url_file = trim($url_file);<br />
    if (empty($url_file)) return false;<br />
    $url_arr = parse_url($url_file);<br />
    if (!is_array($url_arr) || empty($url_arr)) return false;<br />
    $host = $url_arr['host'];<br />
    $path = $url_arr['path'] ."?".@$url_arr['query'];<br />
    $port = isset($url_arr['port']) ?$url_arr['port'] : "80";<br />
    $fp = fsockopen($host, $port, $err_no, $err_str,30);<br />
    if (!$fp) return false;<br />
    $request_str = "GET ".$path." HTTP/1.1\r\n";<br />
    $request_str .= "Host:".$host."\r\n";<br />
    $request_str .= "Connection:Close\r\n\r\n";<br />
    fwrite($fp,$request_str);<br />
    //fread replace fgets<br />
    $first_header = fread($fp, 128);<br />
    fclose($fp);<br />
    if (trim($first_header) == "") return false;<br />
    //check $url_file "Content-Location"<br />
    if (!preg_match("/200/", $first_header) || preg_match("/Location:/", $first_header)) return false;<br />
    return true;<br />
}<br />
echo remote_filesize("http://wlm212.bjphp1.qq1.cc/down/ee.exe");<br />
?><br />
ログイン後にコピー


これはオンラインで見つけた、リモート ファイルのサイズを取得した例です。
ドメイン名が正常でファイルが存在する場合、ファイルサイズが返されます。
ドメイン名が正常でファイルが存在しない場合は false を返します。

ここで、上記のアドレスのようにドメイン名が異常である場合、ドメイン名を解決できない、つまりアクセスできないという問題が発生します。このときエラーメッセージが出力されます。

php_network_getaddresses: getaddrinfo に失敗しました: そのようなホストは知られていません。 D:PHPnow-1.5.6htdocswebadminincfilesize.php の 15 行目

このエラー メッセージを取り除くにはどうすればよいですか? Web サーバーの構成を変更せずにコード内でのみ解決できます。
ファイルサイズ情報を取得するためにajaxを使用したいためです。したがって、エラーを報告することはできません。エラーが報告されると、JavaScript が取得する戻り値はエラー メッセージとなり、フロント デスクが実行できなくなります。

やり方を知っていますか?アドバイスをお願いします。

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