示例#1
0
 public function __construct($host, $database, $username, $password, $table = 'getid3_cache')
 {
     // Check for mysql support
     if (!function_exists('mysql_pconnect')) {
         throw new \Exception('PHP not compiled with mysql support.');
     }
     // Connect to database
     $this->connection = mysql_pconnect($host, $username, $password);
     if (!$this->connection) {
         throw new \Exception('mysql_pconnect() failed - check permissions and spelling.');
     }
     // Select database
     if (!mysql_select_db($database, $this->connection)) {
         throw new \Exception('Cannot use database ' . $database);
     }
     // Set table
     $this->table = $table;
     // Create cache table if not exists
     $this->create_table();
     // Check version number and clear cache if changed
     $version = '';
     $SQLquery = 'SELECT `value`';
     $SQLquery .= ' FROM `' . mysql_real_escape_string($this->table) . '`';
     $SQLquery .= ' WHERE (`filename` = \'' . mysql_real_escape_string(GetID3::VERSION) . '\')';
     $SQLquery .= ' AND (`filesize` = -1)';
     $SQLquery .= ' AND (`filetime` = -1)';
     $SQLquery .= ' AND (`analyzetime` = -1)';
     if ($this->cursor = mysql_query($SQLquery, $this->connection)) {
         list($version) = mysql_fetch_array($this->cursor);
     }
     if ($version != GetID3::VERSION) {
         $this->clear_cache();
     }
     parent::__construct();
 }
示例#2
0
 /**
  * __construct()
  * @param string $table holds name of sqlite table
  * @return type
  */
 public function __construct($table = 'getid3_cache', $hide = false)
 {
     $this->table = $table;
     // Set table
     $file = dirname(__FILE__) . '/' . basename(__FILE__, 'php') . 'sqlite';
     if ($hide) {
         $file = dirname(__FILE__) . '/.ht.' . basename(__FILE__, 'php') . 'sqlite';
     }
     $this->db = new SQLite3($file);
     $db = $this->db;
     $this->create_table();
     // Create cache table if not exists
     $version = '';
     $sql = $this->version_check;
     $stmt = $db->prepare($sql);
     $stmt->bindValue(':filename', GetID3::VERSION, SQLITE3_TEXT);
     $result = $stmt->execute();
     list($version) = $result->fetchArray();
     if ($version != GetID3::VERSION) {
         // Check version number and clear cache if changed
         $this->clear_cache();
     }
     return parent::__construct();
 }
示例#3
0
 public function __construct($cache_type, $dbm_filename, $lock_filename)
 {
     // Check for dba extension
     if (!extension_loaded('dba')) {
         throw new \Exception('PHP is not compiled with dba support, required to use DBM style cache.');
     }
     // Check for specific dba driver
     if (!function_exists('dba_handlers') || !in_array($cache_type, dba_handlers())) {
         throw new \Exception('PHP is not compiled --with ' . $cache_type . ' support, required to use DBM style cache.');
     }
     // Create lock file if needed
     if (!file_exists($lock_filename)) {
         if (!touch($lock_filename)) {
             throw new \Exception('failed to create lock file: ' . $lock_filename);
         }
     }
     // Open lock file for writing
     if (!is_writeable($lock_filename)) {
         throw new \Exception('lock file: ' . $lock_filename . ' is not writable');
     }
     $this->lock = fopen($lock_filename, 'w');
     // Acquire exclusive write lock to lock file
     flock($this->lock, LOCK_EX);
     // Create dbm-file if needed
     if (!file_exists($dbm_filename)) {
         if (!touch($dbm_filename)) {
             throw new \Exception('failed to create dbm file: ' . $dbm_filename);
         }
     }
     // Try to open dbm file for writing
     $this->dba = dba_open($dbm_filename, 'w', $cache_type);
     if (!$this->dba) {
         // Failed - create new dbm file
         $this->dba = dba_open($dbm_filename, 'n', $cache_type);
         if (!$this->dba) {
             throw new \Exception('failed to create dbm file: ' . $dbm_filename);
         }
         // Insert getID3 version number
         dba_insert(GetID3::VERSION, GetID3::VERSION, $this->dba);
     }
     // Init misc values
     $this->cache_type = $cache_type;
     $this->dbm_filename = $dbm_filename;
     // Register destructor
     register_shutdown_function(array($this, '__destruct'));
     // Check version number and clear cache if changed
     if (dba_fetch(GetID3::VERSION, $this->dba) != GetID3::VERSION) {
         $this->clear_cache();
     }
     parent::__construct();
 }