<Website>

getID3

PHK Home

File: /lib/extension.cache.mysql.php

Size:3499
Storage flags:strip

<?php








































































class getID3_cached_mysql extends getID3
{


 private 
$cursor;
private 
$connection;



 public function 
getID3_cached_mysql($host$database$username$password$table='getid3_cache') {


 if (!
function_exists('mysql_pconnect')) {
throw new 
Exception('PHP not compiled with mysql support.');
}


 
$this->connection mysql_pconnect($host$username$password);
if (!
$this->connection) {
throw new 
Exception('mysql_pconnect() failed - check permissions and spelling.');
}


 if (!
mysql_select_db($database$this->connection)) {
throw new 
Exception('Cannot use database '.$database);
}


 
$this->table $table;


 
$this->create_table();


 
$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();
}




 public function 
clear_cache() {

$this->cursor mysql_query('DELETE FROM `'.mysql_real_escape_string($this->table).'`'$this->connection);
$this->cursor mysql_query('INSERT INTO `'.mysql_real_escape_string($this->table).'` VALUES (\''.getID3::VERSION.'\', -1, -1, -1, \''.getID3::VERSION.'\')'$this->connection);
}




 public function 
analyze($filename) {

if (
file_exists($filename)) {


 
$filetime filemtime($filename);
$filesize filesize($filename);


 
$SQLquery 'SELECT `value`';
$SQLquery .= ' FROM `'.mysql_real_escape_string($this->table).'`';
$SQLquery .= ' WHERE (`filename` = \''.mysql_real_escape_string($filename).'\')';
$SQLquery .= '   AND (`filesize` = \''.mysql_real_escape_string($filesize).'\')';
$SQLquery .= '   AND (`filetime` = \''.mysql_real_escape_string($filetime).'\')';
$this->cursor mysql_query($SQLquery$this->connection);
if (
mysql_num_rows($this->cursor) > 0) {

 list(
$result) = mysql_fetch_array($this->cursor);
return 
unserialize(base64_decode($result));
}
}


 
$analysis parent::analyze($filename);


 if (
file_exists($filename)) {
$SQLquery 'INSERT INTO `'.mysql_real_escape_string($this->table).'` (`filename`, `filesize`, `filetime`, `analyzetime`, `value`) VALUES (';
$SQLquery .= '\''.mysql_real_escape_string($filename).'\'';
$SQLquery .= ', \''.mysql_real_escape_string($filesize).'\'';
$SQLquery .= ', \''.mysql_real_escape_string($filetime).'\'';
$SQLquery .= ', \''.mysql_real_escape_string(time() ).'\'';
$SQLquery .= ', \''.mysql_real_escape_string(base64_encode(serialize($analysis))).'\')';
$this->cursor mysql_query($SQLquery$this->connection);
}
return 
$analysis;
}




 private function 
create_table($drop=false) {

$SQLquery 'CREATE TABLE IF NOT EXISTS `'.mysql_real_escape_string($this->table).'` (';
$SQLquery .= '`filename` VARCHAR(255) NOT NULL DEFAULT \'\'';
$SQLquery .= ', `filesize` INT(11) NOT NULL DEFAULT \'0\'';
$SQLquery .= ', `filetime` INT(11) NOT NULL DEFAULT \'0\'';
$SQLquery .= ', `analyzetime` INT(11) NOT NULL DEFAULT \'0\'';
$SQLquery .= ', `value` TEXT NOT NULL';
$SQLquery .= ', PRIMARY KEY (`filename`, `filesize`, `filetime`)) ENGINE=MyISAM';
$this->cursor mysql_query($SQLquery$this->connection);
echo 
mysql_error($this->connection);
}
}

For more information about the PHK package format: http://phk.tekwire.net