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

fsockopen関数エラーの解決方法

WBOY
WBOYオリジナル
2016-06-23 14:13:241244ブラウズ

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


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

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

php_network_getaddresses: getaddrinfo に失敗しました: そのようなホストはわかりません。 D:PHPnow-1.5.6htdocswebadminincfilesize.php の 15 行目

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

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


ディスカッションへの返信 (解決策)

試してみる
{
$fp = fsockopen($host, $port, $err_no, $err_str,30);
}catch(Exception $e)
{
}

追加例外処理を試してみましたが、やはり動作しません。

$fp = @fsockopen($host, $port, $err_no, $err_str,30);
エラーメッセージをマスクします (この関数は例外処理の前に生成されます)

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