別サーバにあるファイル存在チェック
前回の続き的になりますが、サーバは、allow_url_fopen=off の環境です。
色々なサイトを調べてみて、下記コードを発見して、自分なりに修正しましたが、
とにかく重くて仕方ありません。いらないものがあるのでしょうか。
$url = 'http://'.$_SERVER["HTTP_HOST"].$_SERVER['SCRIPT_NAME'];
$link_en = (str_replace("www", "www.en", 'http://'.$_SERVER["HTTP_HOST"].$_SERVER['SCRIPT_NAME'] ));
function url_exists($link_en) {
$arr = parse_url($link_en);
$fp = fsockopen($arr['host'], 80);
if ($fp == FALSE) return FALSE;
$out = '';
$out .= "GET {$arr['path']} HTTP/1.1\r\n";
$out .= "Host: {$arr['host']}\r\n";
$out .= "\r\n";
fwrite($fp, $out); //HTTPコール
$res = fgets($fp); //HTTPレスポンス
$n = preg_match("/^(HTTP\/[0-9\.]+) ([0-9]+) (.+)/i", $res, $arr);
if ($n == 0) return FALSE;
$num = $arr[2];
if ($num >= 200 && $num < 400) return TRUE; //HTTP 200-399 ならOK
return FALSE;
}
if (! url_exists($link_en)) {
$url_en = "English";
} else {
$url_en = '<a href="'.$link_en.'">English</a>';
}
お礼
ありがとうございます。 fopenで試してみます。