/** * 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; }