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