Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Attributes
Db Class Reference
Inheritance diagram for Db:
BackupDbInterface

Public Member Functions

 __construct (\Magento\Backup\Model\ResourceModel\Db $resourceDb, \Magento\Framework\App\ResourceConnection $resource, ?Helper $helper=null)
 
 getResource ()
 
 getTables ()
 
 getTableCreateScript ($tableName, $addDropIfExists=false)
 
 getTableDataDump ($tableName)
 
 getHeader ()
 
 getFooter ()
 
 renderSql ()
 
 createBackup (\Magento\Framework\Backup\Db\BackupInterface $backup)
 
 getDBBackupSize ()
 
 getIgnoreDataTablesList ()
 
- Public Member Functions inherited from BackupDbInterface
 createBackup (\Magento\Framework\Backup\Db\BackupInterface $backup)
 

Data Fields

const BUFFER_LENGTH = 102400
 

Protected Attributes

 $_resourceDb = null
 
 $_resource = null
 
 $_ignoreDataTablesList = ['importexport/importdata']
 

Detailed Description

Database backup model

@api

Since
100.0.2
Deprecated:
Backup module is to be removed.

Definition at line 19 of file Db.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Backup\Model\ResourceModel\Db  $resourceDb,
\Magento\Framework\App\ResourceConnection  $resource,
?Helper  $helper = null 
)
Parameters
\Magento\Backup\Model\ResourceModel\Db$resourceDb
\Magento\Framework\App\ResourceConnection$resource
Helper | null$helper

Definition at line 51 of file Db.php.

55  {
56  $this->_resourceDb = $resourceDb;
57  $this->_resource = $resource;
58  $this->helper = $helper ?? ObjectManager::getInstance()->get(Helper::class);
59  }
$resource
Definition: bulk.php:12

Member Function Documentation

◆ createBackup()

createBackup ( \Magento\Framework\Backup\Db\BackupInterface  $backup)

@inheritDoc

Definition at line 154 of file Db.php.

155  {
156  if (!$this->helper->isEnabled()) {
157  throw new RuntimeException(__('Backup functionality is disabled'));
158  }
159 
160  $backup->open(true);
161 
162  $this->getResource()->beginTransaction();
163 
164  $tables = $this->getResource()->getTables();
165 
166  $backup->write($this->getResource()->getHeader());
167 
168  $ignoreDataTablesList = $this->getIgnoreDataTablesList();
169 
170  foreach ($tables as $table) {
171  $backup->write(
172  $this->getResource()->getTableHeader($table) . $this->getResource()->getTableDropSql($table) . "\n"
173  );
174  $backup->write($this->getResource()->getTableCreateSql($table, false) . "\n");
175 
176  $tableStatus = $this->getResource()->getTableStatus($table);
177 
178  if ($tableStatus->getRows() && !in_array($table, $ignoreDataTablesList)) {
179  $backup->write($this->getResource()->getTableDataBeforeSql($table));
180 
181  if ($tableStatus->getDataLength() > self::BUFFER_LENGTH) {
182  if ($tableStatus->getAvgRowLength() < self::BUFFER_LENGTH) {
183  $limit = floor(self::BUFFER_LENGTH / max($tableStatus->getAvgRowLength(), 1));
184  $multiRowsLength = ceil($tableStatus->getRows() / $limit);
185  } else {
186  $limit = 1;
187  $multiRowsLength = $tableStatus->getRows();
188  }
189  } else {
190  $limit = $tableStatus->getRows();
191  $multiRowsLength = 1;
192  }
193 
194  for ($i = 0; $i < $multiRowsLength; $i++) {
195  $backup->write($this->getResource()->getTableDataSql($table, $limit, $i * $limit));
196  }
197 
198  $backup->write($this->getResource()->getTableDataAfterSql($table));
199  }
200  }
201  $backup->write($this->getResource()->getTableForeignKeysSql());
202  $backup->write($this->getResource()->getTableTriggersSql());
203  $backup->write($this->getResource()->getFooter());
204 
205  $this->getResource()->commitTransaction();
206 
207  $backup->close();
208  }
__()
Definition: __.php:13
const BUFFER_LENGTH
Definition: Db.php:25
$table
Definition: trigger.php:14
$i
Definition: gallery.phtml:31

◆ getDBBackupSize()

getDBBackupSize ( )

Get database backup size

Returns
int

Implements BackupDbInterface.

Definition at line 215 of file Db.php.

216  {
217  $tables = $this->getResource()->getTables();
218  $ignoreDataTablesList = $this->getIgnoreDataTablesList();
219  $size = 0;
220  foreach ($tables as $table) {
221  $tableStatus = $this->getResource()->getTableStatus($table);
222  if ($tableStatus->getRows() && !in_array($table, $ignoreDataTablesList)) {
223  $size += $tableStatus->getDataLength() + $tableStatus->getIndexLength();
224  }
225  }
226  return $size;
227  }
$table
Definition: trigger.php:14

◆ getFooter()

getFooter ( )

Footer for dumps.

Returns
string

Definition at line 126 of file Db.php.

127  {
128  return $this->getResource()->getFooter();
129  }

◆ getHeader()

getHeader ( )

Header for dumps.

Returns
string

Definition at line 116 of file Db.php.

117  {
118  return $this->getResource()->getHeader();
119  }

◆ getIgnoreDataTablesList()

getIgnoreDataTablesList ( )

Returns the list of tables which data should not be backed up

Returns
string[]

Definition at line 234 of file Db.php.

235  {
236  $result = [];
237 
238  foreach ($this->_ignoreDataTablesList as $table) {
239  $result[] = $this->_resource->getTableName($table);
240  }
241 
242  return $result;
243  }
$table
Definition: trigger.php:14

◆ getResource()

getResource ( )

Retrieve resource model

Returns
\Magento\Backup\Model\ResourceModel\Db

Definition at line 73 of file Db.php.

74  {
75  return $this->_resourceDb;
76  }

◆ getTableCreateScript()

getTableCreateScript (   $tableName,
  $addDropIfExists = false 
)

Command to recreate given table.

Parameters
string$tableName
bool$addDropIfExists
Returns
string

Definition at line 95 of file Db.php.

96  {
97  return $this->getResource()->getTableCreateScript($tableName, $addDropIfExists);
98  }
$tableName
Definition: trigger.php:13

◆ getTableDataDump()

getTableDataDump (   $tableName)

Generate table's data dump.

Parameters
string$tableName
Returns
string

Definition at line 106 of file Db.php.

107  {
108  return $this->getResource()->getTableDataDump($tableName);
109  }
$tableName
Definition: trigger.php:13

◆ getTables()

getTables ( )

Tables list.

Returns
array

Definition at line 83 of file Db.php.

84  {
85  return $this->getResource()->getTables();
86  }

◆ renderSql()

renderSql ( )

Get backup SQL.

Returns
string

Definition at line 136 of file Db.php.

137  {
138  ini_set('max_execution_time', 0);
139  $sql = $this->getHeader();
140 
141  $tables = $this->getTables();
142  foreach ($tables as $tableName) {
143  $sql .= $this->getTableCreateScript($tableName, true);
144  $sql .= $this->getTableDataDump($tableName);
145  }
146 
147  $sql .= $this->getFooter();
148  return $sql;
149  }
$tableName
Definition: trigger.php:13
ini_set($varName, $newValue)
getTableCreateScript($tableName, $addDropIfExists=false)
Definition: Db.php:95
getTableDataDump($tableName)
Definition: Db.php:106

Field Documentation

◆ $_ignoreDataTablesList

$_ignoreDataTablesList = ['importexport/importdata']
protected

Definition at line 66 of file Db.php.

◆ $_resource

$_resource = null
protected

Definition at line 39 of file Db.php.

◆ $_resourceDb

$_resourceDb = null
protected

Definition at line 32 of file Db.php.

◆ BUFFER_LENGTH

const BUFFER_LENGTH = 102400

Buffer length for multi rows default 100 Kb

Definition at line 25 of file Db.php.


The documentation for this class was generated from the following file: