Exemple #1
0
 /**
  * 备份
  * @param $filename 文件名
  * @param $db 数据库名(默认当前库)
  * @param $table 数据表名(默认为所有表)
  * @param $backup_data 是否备份数据(默认只备份数据结构)
  */
 public function backup($filename, $db = '', $table = '', $backup_data = false)
 {
     filesystem::rm($filename);
     if ($db) {
         $this->db_name = $db;
         $this->mysqli->select_db($this->db_name);
     }
     set_time_limit(0);
     $table = $this->mysqli->query('show tables') or die($this->show_error());
     $temp_dir = sys_get_temp_dir();
     while ($t = $table->fetch_assoc()) {
         $table_name = '`' . $this->db_name . '`.`' . $t['Tables_in_' . $this->db_name] . '`';
         $rs_ = $this->mysqli->query('show create table ' . $table_name) or die($this->show_error());
         while ($row = $rs_->fetch_assoc()) {
             $rs = $row;
         }
         $data = $rs['Create Table'] . ";\r\n\r\n";
         if ($backup_data) {
             $result = $this->mysqli->query('show columns from ' . $table_name) or die($this->show_error());
             $insert = 'insert into ' . $t['Tables_in_' . $this->db_name] . ' (';
             while ($row = $result->fetch_assoc()) {
                 $insert .= '`' . $row['Field'] . '`,';
             }
             $result->free_result();
             $insert = substr($insert, 0, -1);
             $insert .= ') values ';
             $result = $this->mysqli->query('select * from ' . $table_name) or die($this->show_error());
             $i = 0;
             while ($row = $result->fetch_assoc()) {
                 $insert .= '(';
                 foreach ($row as $r) {
                     $insert .= '\'' . trim(addslashes($r)) . '\',';
                 }
                 $insert = substr($insert, 0, -1);
                 $insert .= '),';
                 $i += 1;
             }
             $result->free_result();
             if ($i > 0) {
                 $data .= substr($insert, 0, -1) . ";\r\n\r\n";
             }
         }
         $data = preg_replace('/(?i)AUTO_INCREMENT=\\d+\\s+/', '', $data);
         filesystem::write($filename, $data, true);
     }
 }
 /**
  * @en Append content to existing file
  * @ru Добавление к файлу
  *
  * $is_written  = filesystem::write($file_path, 'Hello!');   # file data: string(6) "Sandy!"
  * $is_appended = filesystem::append($file_path, ' Dandy!'); # file data: string(13) "Sandy! Dandy!"
  *
  * @param string $file_path Path to the file
  * @param mixed $data String, array or stream resource
  *
  * @return bool
  */
 public static function append($file_path, $data)
 {
     return filesystem::write($file_path, $data, FILE_APPEND);
 }