sohaib hack Admin
عدد المساهمات : 121 نقاط : 323 تاريخ التسجيل : 20/09/2012
| موضوع: أخذ نسخة احتياطية لقاعدة البيانات ب php الأربعاء أكتوبر 24, 2012 11:29 pm | |
| مع هذه الكلاس الرائعة ستتمكن بكل سهولة ويسر ان تقوم بأخذ نسخة احتياطية لاى قاعدة بيانات ويمكنك اضافة هذه الخاصية فى لوحة تحكم اسكربتك حتى يقوم المستخدم بأخذ نسخة احتياطية لقاعدة البياانات الاسكربت - الكود:
-
001. <?php 002. /* 003. MySQL database backup class, version 1.0.0 004. Written by Vagharshak Tozalakyan <vagh#armdex.com> 005. Released under GNU Public license 006. */ 007. define('MSB_VERSION', '1.0.0'); 008. define('MSB_NL', "\r\n"); 009. define('MSB_STRING', 0); 010. define('MSB_DOWNLOAD', 1); 011. define('MSB_SAVE', 2); 012. class MySQL_Backup 013. { 014. var $server = 'localhost'; 015. var $port = 3306; 016. var $username = 'root'; 017. var $password = ''; 018. var $database = ''; 019. var $link_id = -1; 020. var $connected = false; 021. var $tables = array(); 022. var $drop_tables = true; 023. var $struct_only = false; 024. var $comments = true; 025. var $backup_dir = ''; 026. var $fname_format = 'd_m_y__H_i_s'; 027. var $error = ''; 028. function Execute($task = MSB_STRING, $fname = '', $compress = false) 029. { 030. if (!($sql = $this->_Retrieve())) 031. { 032. return false; 033. } 034. if ($task == MSB_SAVE) 035. { 036. if (empty($fname)) 037. { 038. $fname = $this->backup_dir; 039. $fname .= date($this->fname_format); 040. $fname .= ($compress ? '.sql.gz' : '.sql'); 041. } 042. return $this->_SaveToFile($fname, $sql, $compress); 043. } 044. elseif ($task == MSB_DOWNLOAD) 045. { 046. if (empty($fname)) 047. { 048. $fname = date($this->fname_format); 049. $fname .= ($compress ? '.sql.gz' : '.sql'); 050. } 051. return $this->_DownloadFile($fname, $sql, $compress); 052. } 053. else 054. { 055. return $sql; 056. } 057. } 058. function _Connect() 059. { 060. $value = false; 061. if (!$this->connected) 062. { 063. $host = $this->server . ':' . $this->port; 064. $this->link_id = mysql_connect($host, $this->username, $this->password); 065. } 066. if ($this->link_id) 067. { 068. if (empty($this->database)) 069. { 070. $value = true; 071. } 072. elseif ($this->link_id !== -1) 073. { 074. $value = mysql_select_db($this->database, $this->link_id); 075. } 076. else 077. { 078. $value = mysql_select_db($this->database); 079. } 080. } 081. if (!$value) 082. { 083. $this->error = mysql_error(); 084. } 085. return $value; 086. } 087. function _Query($sql) 088. { 089. if ($this->link_id !== -1) 090. { 091. $result = mysql_query($sql, $this->link_id); 092. } 093. else 094. { 095. $result = mysql_query($sql); 096. } 097. if (!$result) 098. { 099. $this->error = mysql_error(); 100. } 101. return $result; 102. } 103. function _GetTables() 104. { 105. $value = array(); 106. if (!($result = $this->_Query('SHOW TABLES'))) 107. { 108. return false; 109. } 110. while ($row = mysql_fetch_row($result)) 111. { 112. if (empty($this->tables) || in_array($row[0], $this->tables)) 113. { 114. $value[] = $row[0]; 115. } 116. } 117. if (!sizeof($value)) 118. { 119. $this->error = 'No tables found in database.'; 120. return false; 121. } 122. return $value; 123. } 124. function _DumpTable($table) 125. { 126. $value = ''; 127. $this->_Query('LOCK TABLES ' . $table . ' WRITE'); 128. if ($this->comments) 129. { 130. $value .= '#' . MSB_NL; 131. $value .= '# Table structure for table `' . $table . '`' . MSB_NL; 132. $value .= '#' . MSB_NL . MSB_NL; 133. } 134. if ($this->drop_tables) 135. { 136. $value .= 'DROP TABLE IF EXISTS `' . $table . '`;' . MSB_NL; 137. } 138. if (!($result = $this->_Query('SHOW CREATE TABLE ' . $table))) 139. { 140. return false; 141. } 142. $row = mysql_fetch_assoc($result); 143. $value .= str_replace("\n", MSB_NL, $row['Create Table']) . ';'; 144. $value .= MSB_NL . MSB_NL; 145. if (!$this->struct_only) 146. { 147. if ($this->comments) 148. { 149. $value .= '#' . MSB_NL; 150. $value .= '# Dumping data for table `' . $table . '`' . MSB_NL; 151. $value .= '#' . MSB_NL . MSB_NL; 152. } 153. $value .= $this->_GetInserts($table); 154. } 155. $value .= MSB_NL . MSB_NL; 156. $this->_Query('UNLOCK TABLES'); 157. return $value; 158. } 159. function _GetInserts($table) 160. { 161. $value = ''; 162. if (!($result = $this->_Query('SELECT * FROM ' . $table))) 163. { 164. return false; 165. } 166. while ($row = mysql_fetch_row($result)) 167. { 168. $values = ''; 169. foreach ($row as $data) 170. { 171. $values .= '\'' . addslashes($data) . '\', '; 172. } 173. $values = substr($values, 0, -2); 174. $value .= 'INSERT INTO ' . $table . ' VALUES (' . $values . ');' . MSB_NL; 175. } 176. return $value; 177. } 178. function _Retrieve() 179. { 180. $value = ''; 181. if (!$this->_Connect()) 182. { 183. return false; 184. } 185. if ($this->comments) 186. { 187. $value .= '#' . MSB_NL; 188. $value .= '# MySQL database dump' . MSB_NL; 189. $value .= '# Created by MySQL_Backup class, ver. ' . MSB_VERSION . MSB_NL; 190. $value .= '#' . MSB_NL; 191. $value .= '# Host: ' . $this->server . MSB_NL; 192. $value .= '# Generated: ' . date('M j, Y') . ' at ' . date('H:i') . MSB_NL; 193. $value .= '# MySQL version: ' . mysql_get_server_info() . MSB_NL; 194. $value .= '# PHP version: ' . phpversion() . MSB_NL; 195. if (!empty($this->database)) 196. { 197. $value .= '#' . MSB_NL; 198. $value .= '# Database: `' . $this->database . '`' . MSB_NL; 199. } 200. $value .= '#' . MSB_NL . MSB_NL . MSB_NL; 201. } 202. if (!($tables = $this->_GetTables())) 203. { 204. return false; 205. } 206. foreach ($tables as $table) 207. { 208. if (!($table_dump = $this->_DumpTable($table))) 209. { 210. $this->error = mysql_error(); 211. return false; 212. } 213. $value .= $table_dump; 214. } 215. return $value; 216. } 217. function _SaveToFile($fname, $sql, $compress) 218. { 219. if ($compress) 220. { 221. if (!($zf = gzopen($fname, 'w9'))) 222. { 223. $this->error = 'Can\'t create the output file.'; 224. return false; 225. } 226. gzwrite($zf, $sql); 227. gzclose($zf); 228. } 229. else 230. { 231. if (!($f = fopen($fname, 'w'))) 232. { 233. $this->error = 'Can\'t create the output file.'; 234. return false; 235. } 236. fwrite($f, $sql); 237. fclose($f); 238. } 239. return true; 240. } 241. function _DownloadFile($fname, $sql, $compress) 242. { 243. header('Content-disposition: filename=' . $fname); 244. header('Content-type: application/octetstream'); 245. header('Pragma: no-cache'); 246. header('Expires: 0'); 247. echo ($compress ? gzencode($sql) : $sql); 248. return true; 249. } 250. } 251. ?>
طريقة الاستخدام : أسهل مما تتخيل فقط قم باضافة بيانات الاتصال بقاعدة البيانات المراد أخذ باك اب لها - الكود:
-
1. var $server = 'localhost'; 2. var $port = 3306; 3. var $username = 'root'; 4. var $password = ''; 5. var $database = ''; 6.
ودع الباقى على الكلاس لتحميل الملف من هــــــــــــــــــنا | |
|