- Timestamp:
- Jul 7, 2009, 10:27:37 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/charlies_content/getid3/getid3/extension.cache.mysql.php
r3318 r3544 1 1 <?php 2 // +----------------------------------------------------------------------+ 3 // | PHP version 5 | 4 // +----------------------------------------------------------------------+ 5 // | Copyright (c) 2002-2006 James Heinrich, Allan Hansen | 6 // +----------------------------------------------------------------------+ 7 // | This source file is subject to version 2 of the GPL license, | 8 // | that is bundled with this package in the file license.txt and is | 9 // | available through the world-wide-web at the following url: | 10 // | http://www.gnu.org/copyleft/gpl.html | 11 // +----------------------------------------------------------------------+ 12 // | getID3() - http://getid3.sourceforge.net or http://www.getid3.org | 13 // +----------------------------------------------------------------------+ 14 // | Authors: James Heinrich <infoØgetid3*org> | 15 // | Allan Hansen <ahØartemis*dk> | 16 // +----------------------------------------------------------------------+ 17 // | extension.cache.mysql.php | 18 // | MySQL Cache Extension. | 19 // | dependencies: getid3. | 20 // +----------------------------------------------------------------------+ 21 // 22 // $Id$ 2 ///////////////////////////////////////////////////////////////// 3 /// getID3() by James Heinrich <info@getid3.org> // 4 // available at http://getid3.sourceforge.net // 5 // or http://www.getid3.org // 6 ///////////////////////////////////////////////////////////////// 7 // // 8 // extension.cache.mysql.php - part of getID3() // 9 // Please see readme.txt for more information // 10 // /// 11 ///////////////////////////////////////////////////////////////// 12 // // 13 // This extension written by Allan Hansen <ahØartemis*dk> // 14 // /// 15 ///////////////////////////////////////////////////////////////// 23 16 24 17 … … 32 25 * 33 26 * require_once 'getid3/getid3.php'; 34 * $getid3 = new getid3; 35 * $getid3->encoding = 'UTF-8'; 36 * try { 37 * $info1 = $getid3->Analyse('file1.flac'); 38 * $info2 = $getid3->Analyse('file2.wv'); 39 * .... 27 * $getID3 = new getID3; 28 * $getID3->encoding = 'UTF-8'; 29 * $info1 = $getID3->analyze('file1.flac'); 30 * $info2 = $getID3->analyze('file2.wv'); 40 31 * 41 32 * getID3_cached usage: … … 43 34 * require_once 'getid3/getid3.php'; 44 35 * require_once 'getid3/getid3/extension.cache.mysql.php'; 45 * $getid3 = new getid3_cached_mysql('localhost', 'database', 'username', 'password'); 46 * $getid3->encoding = 'UTF-8'; 47 * try { 48 * $info1 = $getid3->analyse('file1.flac'); 49 * $info2 = $getid3->analyse('file2.wv'); 50 * ... 36 * $getID3 = new getID3_cached_mysql('localhost', 'database', 37 * 'username', 'password'); 38 * $getID3->encoding = 'UTF-8'; 39 * $info1 = $getID3->analyze('file1.flac'); 40 * $info2 = $getID3->analyze('file2.wv'); 51 41 * 52 42 * … … 80 70 81 71 82 class get id3_cached_mysql extends getID372 class getID3_cached_mysql extends getID3 83 73 { 84 74 85 private $cursor; 86 private $connection; 75 // private vars 76 var $cursor; 77 var $connection; 87 78 88 79 89 public function __construct($host, $database, $username, $password) { 80 // public: constructor - see top of this file for cache type and cache_options 81 function getID3_cached_mysql($host, $database, $username, $password) { 90 82 91 92 93 throw new getid3_exception('PHP not compiled with mysql support.');94 83 // Check for mysql support 84 if (!function_exists('mysql_pconnect')) { 85 die('PHP not compiled with mysql support.'); 86 } 95 87 96 97 $this->connection = @mysql_pconnect($host, $username, $password);98 99 throw new getid3_exception('mysql_pconnect() failed - check permissions and spelling.');100 88 // Connect to database 89 $this->connection = mysql_pconnect($host, $username, $password); 90 if (!$this->connection) { 91 die('mysql_pconnect() failed - check permissions and spelling.'); 92 } 101 93 102 103 if (!@mysql_select_db($database, $this->connection)) {104 throw new getid3_exception('Cannot use database '.$database);105 94 // Select database 95 if (!mysql_select_db($database, $this->connection)) { 96 die('Cannot use database '.$database); 97 } 106 98 107 108 99 // Create cache table if not exists 100 $this->create_table(); 109 101 110 111 $this->cursor = mysql_query("SELECT `value` FROM `getid3_cache` WHERE (`filename` = '".getid3::VERSION."') AND (`filesize` = '-1') AND (`filetime` = '-1') AND (`analyzetime` = '-1')", $this->connection);112 113 if ($version != getid3::VERSION) {114 115 102 // Check version number and clear cache if changed 103 $this->cursor = mysql_query("SELECT `value` FROM `getid3_cache` WHERE (`filename` = '".GETID3_VERSION."') AND (`filesize` = '-1') AND (`filetime` = '-1') AND (`analyzetime` = '-1')", $this->connection); 104 list($version) = @mysql_fetch_array($this->cursor); 105 if ($version != GETID3_VERSION) { 106 $this->clear_cache(); 107 } 116 108 117 parent::__construct();118 109 parent::getID3(); 110 } 119 111 120 112 121 113 122 public function clear_cache() { 114 // public: clear cache 115 function clear_cache() { 123 116 124 125 $this->cursor = mysql_query("INSERT INTO `getid3_cache` VALUES ('".getid3::VERSION."', -1, -1, -1, '".getid3::VERSION."')", $this->connection);126 117 $this->cursor = mysql_query("DELETE FROM `getid3_cache`", $this->connection); 118 $this->cursor = mysql_query("INSERT INTO `getid3_cache` VALUES ('".GETID3_VERSION."', -1, -1, -1, '".GETID3_VERSION."')", $this->connection); 119 } 127 120 128 121 129 122 130 public function Analyze($filename) { 123 // public: analyze file 124 function analyze($filename) { 131 125 132 126 if (file_exists($filename)) { 133 127 134 135 136 137 128 // Short-hands 129 $filetime = filemtime($filename); 130 $filesize = filesize($filename); 131 $filenam2 = mysql_escape_string($filename); 138 132 139 140 141 133 // Loopup file 134 $this->cursor = mysql_query("SELECT `value` FROM `getid3_cache` WHERE (`filename`='".$filenam2."') AND (`filesize`='".$filesize."') AND (`filetime`='".$filetime."')", $this->connection); 135 list($result) = @mysql_fetch_array($this->cursor); 142 136 143 144 145 146 147 137 // Hit 138 if ($result) { 139 return unserialize($result); 140 } 141 } 148 142 149 150 $result = parent::Analyze($filename);143 // Miss 144 $result = parent::analyze($filename); 151 145 152 153 154 155 156 157 158 146 // Save result 147 if (file_exists($filename)) { 148 $res2 = mysql_escape_string(serialize($result)); 149 $this->cursor = mysql_query("INSERT INTO `getid3_cache` (`filename`, `filesize`, `filetime`, `analyzetime`, `value`) VALUES ('".$filenam2."', '".$filesize."', '".$filetime."', '".time()."', '".$res2."')", $this->connection); 150 } 151 return $result; 152 } 159 153 160 154 161 155 162 //(re)create sql table163 privatefunction create_table($drop = false) {156 // private: (re)create sql table 157 function create_table($drop = false) { 164 158 165 166 167 168 169 170 171 172 173 159 $this->cursor = mysql_query("CREATE TABLE IF NOT EXISTS `getid3_cache` ( 160 `filename` VARCHAR(255) NOT NULL DEFAULT '', 161 `filesize` INT(11) NOT NULL DEFAULT '0', 162 `filetime` INT(11) NOT NULL DEFAULT '0', 163 `analyzetime` INT(11) NOT NULL DEFAULT '0', 164 `value` TEXT NOT NULL, 165 PRIMARY KEY (`filename`,`filesize`,`filetime`)) TYPE=MyISAM", $this->connection); 166 echo mysql_error($this->connection); 167 } 174 168 } 175 169
Note: See TracChangeset
for help on using the changeset viewer.