function plugin_tenki_cache_image_fetch($target, $id)
{
    $filename = MOD_PUKI_UPLOAD_DIR . $id . "_tenki.gif";
    if (!is_readable($filename)) {
        $result = PukiWikiFunc::http_request($target);
        if ($result['rc'] == 200) {
            $data = $result['data'];
            plugin_tenki_cache_image_save($data, $filename);
            $size = @getimagesize($filename);
            $url = MOD_PUKI_UPLOAD_URL . $id . "_tenki.gif";
        } else {
            $url = '';
            $size = false;
        }
    } else {
        $url = MOD_PUKI_UPLOAD_URL . $id . "_tenki.gif";
        $size = @getimagesize($filename);
    }
    return array($url, $size);
}
function plugin_tenki_cache_image_fetch($target, $id)
{
    $filename = MOD_PUKI_UPLOAD_DIR . $id . "_tenki.gif";
    if (!is_readable($filename)) {
        $file = fopen($target, "rb");
        // たぶん size 取得よりこちらが原始的だからやや速い
        if (!$file) {
            fclose($file);
            $url = MOD_PUKI_NOIMAGE;
        } else {
            // リモートファイルのパケット有効後対策
            // http://search.net-newbie.com/php/function.fread.html
            $contents = "";
            do {
                $data = fread($file, 8192);
                if (strlen($data) == 0) {
                    break;
                }
                $contents .= $data;
            } while (true);
            fclose($file);
            $data = $contents;
            unset($contents);
            $size = @getimagesize($target);
            // あったら、size を取得、通常は1が返るが念のため0の場合も(reimy)
            if ($size[0] <= 1) {
                $url = MOD_PUKI_NOIMAGE;
            } else {
                $url = MOD_PUKI_UPLOAD_URL . $id . "_tenki.gif";
            }
        }
        plugin_tenki_cache_image_save($data, $filename);
    } else {
        $url = MOD_PUKI_UPLOAD_URL . $id . "_tenki.gif";
    }
    $size = @getimagesize($filename);
    return array($url, $size);
}