%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /data/www_bck/varak.cloud_bck/tracker.varak.cloud/src/Legacy/Cache/
Upload File :
Create Path :
Current File : //data/www_bck/varak.cloud_bck/tracker.varak.cloud/src/Legacy/Cache/File.php

<?php
/**
 * TorrentPier – Bull-powered BitTorrent tracker engine
 *
 * @copyright Copyright (c) 2005-2018 TorrentPier (https://torrentpier.com)
 * @link      https://github.com/torrentpier/torrentpier for the canonical source repository
 * @license   https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
 */

namespace TorrentPier\Legacy\Cache;

/**
 * Class File
 * @package TorrentPier\Legacy\Cache
 */
class File extends Common
{
    public $used = true;
    public $engine = 'Filecache';
    public $dir;
    public $prefix;

    public function __construct($dir, $prefix = null)
    {
        $this->dir = $dir;
        $this->prefix = $prefix;
        $this->dbg_enabled = sql_dbg_enabled();
    }

    public function get($name, $get_miss_key_callback = '', $ttl = 0)
    {
        $filename = $this->dir . clean_filename($this->prefix . $name) . '.php';

        $this->cur_query = "cache->set('$name')";
        $this->debug('start');

        if (file_exists($filename)) {
            require($filename);
        }

        $this->debug('stop');
        $this->cur_query = null;

        return (!empty($filecache['value'])) ? $filecache['value'] : false;
    }

    public function set($name, $value, $ttl = 86400)
    {
        if (!\function_exists('var_export')) {
            return false;
        }

        $this->cur_query = "cache->set('$name')";
        $this->debug('start');

        $filename = $this->dir . clean_filename($this->prefix . $name) . '.php';
        $expire = TIMENOW + $ttl;
        $cache_data = array(
            'expire' => $expire,
            'value' => $value,
        );

        $filecache = "<?php\n";
        $filecache .= "if (!defined('BB_ROOT')) die(basename(__FILE__));\n";
        $filecache .= '$filecache = ' . var_export($cache_data, true) . ";\n";
        $filecache .= '?>';

        $this->debug('stop');
        $this->cur_query = null;
        $this->num_queries++;

        return (bool)file_write($filecache, $filename, false, true, true);
    }

    public function rm($name = '')
    {
        $clear = false;
        if ($name) {
            $this->cur_query = "cache->rm('$name')";
            $this->debug('start');

            $filename = $this->dir . clean_filename($this->prefix . $name) . '.php';
            if (file_exists($filename)) {
                $clear = (bool)unlink($filename);
            }

            $this->debug('stop');
            $this->cur_query = null;
            $this->num_queries++;
        } else {
            if (is_dir($this->dir)) {
                if ($dh = opendir($this->dir)) {
                    while (($file = readdir($dh)) !== false) {
                        if ($file != "." && $file != "..") {
                            $filename = $this->dir . $file;

                            unlink($filename);
                            $clear = true;
                        }
                    }
                    closedir($dh);
                }
            }
        }
        return $clear;
    }

    public function gc($expire_time = TIMENOW)
    {
        $clear = false;

        if (is_dir($this->dir)) {
            if ($dh = opendir($this->dir)) {
                while (($file = readdir($dh)) !== false) {
                    if ($file != "." && $file != "..") {
                        $filename = $this->dir . $file;

                        require($filename);

                        if (!empty($filecache['expire']) && ($filecache['expire'] < $expire_time)) {
                            unlink($filename);
                            $clear = true;
                        }
                    }
                }
                closedir($dh);
            }
        }

        return $clear;
    }
}

Zerion Mini Shell 1.0