function haveTime() { return microtime(true) - START_EXEC_TIME < IntOption("dump_max_exec_time"); }
function SkipTableData($table) { $table = strtolower($table); if (preg_match("#^b_stat#", $table) && IntOption('dump_base_skip_stat')) { return true; } elseif (preg_match("#^b_search_%#", $table) && !preg_match('^(b_search_custom_rank|b_search_phrase)$', $table) && IntOption('dump_base_skip_search')) { return true; } elseif ($table == 'b_event_log' && IntOption('dump_base_skip_log')) { return true; } return false; }
function haveTime() { if (defined('NO_TIME')) { return microtime(true) - START_EXEC_TIME < 1; } return microtime(true) - START_EXEC_TIME < IntOption("dump_max_exec_time"); }
<td><input type="checkbox" name="dump_disable_gzip" value="Y" <?php echo IntOption('dump_use_compression') && $bGzip ? '' : 'checked'; ?> <?php echo !$bGzip ? 'disabled' : ''; ?> > </tr> <tr> <td><?php echo GetMessage("MAIN_DUMP_MAX_ARCHIVE_SIZE"); ?> </td> <td><input type="text" name="dump_archive_size_limit" value="<?php echo IntOption('dump_archive_size_limit', 100 * 1024 * 1024) / 1024 / 1024; ?> " size=4></td> </tr> <?php $editTab->Buttons(); ?> <input type="button" class="adm-btn-save" value="<?php echo GetMessage("DUMP_MAIN_SAVE"); ?> " onclick="SaveSettings()"> <?php $editTab->End(); ?> </form>
function GetArcName($prefix = '') { $arc_name = DOCUMENT_ROOT . BX_ROOT . "/backup/" . date("Ymd_His"); $k = IntOption('dump_file_kernel'); $p = IntOption('dump_file_public'); $b = IntOption('dump_base'); if ($k && $p && $b) { $arc_name .= '_full'; } elseif (!($p xor $b)) { $arc_name .= '_' . ($k ? '' : 'no') . 'core'; } elseif (!($k xor $b)) { $arc_name .= '_' . ($p ? '' : 'no') . 'pub'; } elseif (!($k xor $p)) { $arc_name .= '_' . ($b ? '' : 'no') . 'sql'; } $arc_name .= '_' . substr(md5(uniqid(rand(), true)), 0, 8); return $arc_name; }
if (file_exists($arc_name = CTar::getNextName($NS['arc_name']))) { unset($NS['obBucket']); $NS['arc_name'] = $arc_name; } else { CBitrixCloudBackup::clearOptions(); if ($arParams['dump_delete_old'] == 1) { $name = CTar::getFirstName($NS['arc_name']); while(file_exists($name)) { $size = filesize($name); if (unlink($name) && IntOption("disk_space") > 0) CDiskQuota::updateDiskQuota("file",$size , "del"); $name = CTar::getNextName($name); } } break; } } else { $obUpload->Delete(); RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_FILE_SEND").basename($NS['arc_name']), 680, $NS['arc_name']); } } CheckPoint(); }
function BaseDump($arc_name="", $tbl_num, $start_row, &$TotalTables = 0) { global $DB; $last_row = $start_row; $ret = array('st_row' => $last_row); $mem = 32; // Minimum required value $sql = "SHOW TABLES;"; $res = $DB->Query($sql, false, "File: ".__FILE__."<br>Line: ".__LINE__); $ptab = Array(); while($row = $res->Fetch()) { $ar = each($row); $table = $ar[1]; $ptab[] = $table; } if (!$f = fopen($arc_name,"a")) RaiseErrorAndDie('Can\'t open file: '.$arc_name); $i = $tbl_num; $dump = ""; $TotalTables = count($ptab); while($i <= ($TotalTables - 1) && haveTime()) { if (!strlen($ptab[$i])) continue; if($last_row == -1) { $table = $ptab[$i]; $drop = !IntOption('dump_base_skip_stat') || !preg_match("#^b_stat#i",$table); // если не переносим статистику, то не удаляем старую статистику при восстановлении if ($dump = CBackup::createTable($ptab[$i], $drop)) fwrite($f, $dump."\n"); else $row_next = -1; $next = false; $ret["num"] = $i; $ret["st_row"] = 0; $last_row = 0; } if ($dump) { $res = $DB->Query("SELECT count(*) as count FROM `$ptab[$i]`"); $row_count = $res->Fetch(); if($row_count["count"] > 0) { if($ptab[$i] == 'b_xml_tree') $row_next = -1; elseif(IntOption('dump_base_skip_stat') && preg_match('#^b_stat#i',$ptab[$i])) $row_next = -1; elseif(IntOption('dump_base_skip_search') && preg_match("#^(b_search_content_site|b_search_content_group|b_search_content_stem|b_search_content_title|b_search_tags|b_search_content_freq|b_search_content|b_search_suggest)$#i",$ptab[$i])) $row_next = -1; elseif(IntOption('dump_base_skip_log') && $ptab[$i] == 'b_event_log') $row_next = -1; elseif (CTar::strpos($dump, 'DEFINER VIEW')) $row_next = -1; else $row_next = CBackup::getData($ptab[$i], $f, $row_count["count"], $last_row, $mem); } else $row_next = -1; } if($row_next > 0) { $last_row = $row_next; $ret["num"] = $i; $ret["st_row"] = $last_row; } else { $ret["num"] = ++$i; $ret["st_row"] = -1; $last_row = -1; } } fclose($f); if(!($i <= (count($ptab) - 1))) $ret["end"] = true; return $ret; }
/** * dumpMysql */ public function dumpMysql() { require_once $_SERVER["DOCUMENT_ROOT"] . "/vendor/cjp2600/bim-core/src/Export/Dump/dump.php"; if (!defined("START_EXEC_TIME")) { define("START_EXEC_TIME", microtime(true)); } define('NO_TIME', true); IntOption("dump_base_skip_stat", 1); IntOption("dump_base_skip_search", 1); IntOption("dump_base_skip_log", 1); makeLocalDump($this->getSessionDBtFileName()); }