Backup\Model\Database\Mysql::export PHP Метод

export() публичный Метод

Export function
public export ( string $what = 'structureanddata' ) : string
$what string Action
Результат string
    public function export($what = 'structureanddata')
    {
        if (empty($what)) {
            $what = 'structureanddata';
        }
        $parameters = $this->getAdapter()->getDriver()->getConnection()->getConnectionParameters();
        $cmd = escapeshellcmd('/usr/bin/mysqldump');
        //Prepare command
        $cmd .= ' --user=' . escapeshellarg($parameters['username']);
        $cmd .= ' --password=' . escapeshellarg($parameters['password']);
        if (!empty($parameters['hostname'])) {
            $cmd .= ' --host=' . escapeshellarg($parameters['hostname']);
        }
        if (!empty($parameters['port'])) {
            $cmd .= ' --port=' . escapeshellarg($parameters['port']);
        }
        switch ($what) {
            case 'dataonly':
                $cmd .= ' --no-create-info';
                break;
            case 'structureonly':
                $cmd .= ' --no-data';
                break;
        }
        $cmd .= ' ' . escapeshellarg($parameters['database']);
        ob_start();
        passthru($cmd . ' | gzip');
        return ob_get_clean();
    }

Usage Example

Пример #1
0
 /**
  * Download database as gzip
  *
  * @return \Zend\Stdlib\ResponseInterface
  */
 public function downloadDatabaseAction()
 {
     $what = $this->params()->fromPost('what');
     if (empty($what)) {
         return $this->redirect()->toRoute('module/backup');
     }
     $model = null;
     $configuration = $this->getServiceLocator()->get('Config');
     switch ($configuration['db']['driver']) {
         case 'pdo_pgsql':
             $model = new Model\Database\Pgsql();
             break;
         case 'pdo_mysql':
             $model = new Model\Database\Mysql();
             break;
     }
     if (empty($model)) {
         return $this->redirect()->toRoute('module/backup');
     }
     $content = $model->export($what);
     $filename = 'database-backup-' . date('Y-m-d-H-i-s') . '.sql.gz';
     $headers = new Headers();
     $headers->addHeaderLine('Pragma', 'public')->addHeaderLine('Cache-control', 'must-revalidate, post-check=0, pre-check=0')->addHeaderLine('Cache-control', 'private')->addHeaderLine('Expires', -1)->addHeaderLine('Content-Type', 'application/download')->addHeaderLine('Content-Transfer-Encoding', 'binary')->addHeaderLine('Content-Length', strlen($content))->addHeaderLine('Content-Disposition', 'attachment; filename=' . $filename);
     $response = $this->getResponse();
     $response->setHeaders($headers);
     $response->setContent($content);
     return $response;
 }
Mysql