コード例 #1
0
ファイル: squidcache.php プロジェクト: BillTheBest/1.6.x
function find_md5($filemd5)
{
    $array = HyperCacheMD5File_get($filemd5);
    if (!is_array($array)) {
        if ($GLOBALS["VERBOSE"]) {
            echo "<li>" . __LINE__ . " {$filemd5}  No such array</li>";
        }
        if (!$GLOBALS["VERBOSE"]) {
            header("HTTP/1.0 404 Not Found");
        }
        die;
    }
    $filepath = $array["FILEPATH"];
    $basename = $array["FILENAME"];
    $filesize = $array["FILESIZE"];
    $content_type = $array["FILETYPE"];
    $FullPath = "{$GLOBALS["HyperCacheStoragePath"]}/{$filepath}";
    if (!is_file($FullPath)) {
        if ($GLOBALS["VERBOSE"]) {
            echo "<li>" . __LINE__ . " {$FullPath}  No such file</li>";
        }
        header("HTTP/1.0 404 Not Found");
        die;
    }
    $filepath = $array["FILEPATH"];
    $basename = $array["FILENAME"];
    $filesize = $array["FILESIZE"];
    $content_type = $array["FILETYPE"];
    $time = $array["time"];
    $content_type_NO["text/html"] = true;
    if ($GLOBALS["VERBOSE"]) {
        echo "<li>" . __LINE__ . " FILEPATH:{$filepath}</li>";
    }
    if ($GLOBALS["VERBOSE"]) {
        echo "<li>" . __LINE__ . " FILENAME:{$basename}</li>";
    }
    if ($GLOBALS["VERBOSE"]) {
        echo "<li>" . __LINE__ . " FILESIZE:{$filesize}</li>";
    }
    if ($GLOBALS["VERBOSE"]) {
        echo "<li>" . __LINE__ . " FILETYPE:{$content_type}</li>";
    }
    if ($GLOBALS["VERBOSE"]) {
        die;
    }
    header("Content-type: {$content_type}");
    if (!isset($content_type_NO[$content_type])) {
        header('Content-Transfer-Encoding: binary');
        header("Content-Disposition: attachment; filename=\"{$basename}\"");
    }
    header("Pragma: cache");
    header("Cache-Control: public");
    header("User-Cache-Control: public");
    header("Expires: Sat, 26 Jul 2100 05:00:00 GMT");
    header("Content-Length: " . $filesize);
    ob_clean();
    flush();
    readfile("{$GLOBALS["HyperCacheStoragePath"]}/{$filepath}");
}
コード例 #2
0
function HyperCacheScanDownload($urikey, $TargetFile, $ID, $FileType)
{
    if (!isset($GLOBALS["SIZE_DOWNLOADED"])) {
        $GLOBALS["SIZE_DOWNLOADED"] = 0;
    }
    if (!isset($GLOBALS["FAILED_DOWNLOADED"])) {
        $GLOBALS["FAILED_DOWNLOADED"] = 0;
    }
    if (!is_numeric($GLOBALS["SIZE_DOWNLOADED"])) {
        $GLOBALS["SIZE_DOWNLOADED"] = 0;
    }
    if (!is_numeric($GLOBALS["FAILED_DOWNLOADED"])) {
        $GLOBALS["FAILED_DOWNLOADED"] = 0;
    }
    $curl = new ccurl($urikey);
    $FullTarGetPath = $GLOBALS["HyperCacheStoragePath"] . "/" . $TargetFile;
    $GLOBALS["HITS"]++;
    $parse_url = parse_url($urikey);
    $hostname = $parse_url["host"];
    $OriginalFile = basename($parse_url["path"]);
    $t = time();
    events("{downloading} {$OriginalFile} {from} {$hostname}", $ID, 3, __LINE__);
    if (!$curl->GetFile($FullTarGetPath)) {
        events("HyperCacheScanDownload:: Download failed with error {$curl->error}", $ID, 2, __LINE__);
        $GLOBALS["FAILED_DOWNLOADED"]++;
        return false;
    }
    $size = @filesize($FullTarGetPath);
    $MD5File = md5_file($FullTarGetPath);
    $sizeLog = FormatBytes($size / 1024);
    events("{$hostname}: {$OriginalFile} ({$sizeLog}) {took}: " . distanceOfTimeInWords($t, time()), $ID, 2, __LINE__);
    $GLOBALS["SIZE_DOWNLOADED"] = $GLOBALS["SIZE_DOWNLOADED"] + $size;
    $path = HyperCacheMD5File_get($MD5File);
    if ($path != null) {
        if (!HyperCacheRetranslation_set($urikey, $MD5File, $FileType, $path)) {
            $GLOBALS["FAILED_DOWNLOADED"]++;
            return;
        }
        return;
    }
    if (!HyperCacheMD5File_set($MD5File, $TargetFile, $FileType, $size, $OriginalFile)) {
        $GLOBALS["FAILED_DOWNLOADED"]++;
        return;
    }
    if (!HyperCacheRetranslation_set($urikey, $MD5File, $FileType, $TargetFile)) {
        $GLOBALS["FAILED_DOWNLOADED"]++;
        return;
    }
    return true;
}