Ajuda com PHP para backup do banco de dados usando MySQLDump

1. Ajuda com PHP para backup do banco de dados usando MySQLDump

hauck
hauck

(usa Nenhuma)

Enviado em 26/07/2024 - 09:30h

A variável $command no código é equivalente a este comando, e todas as variáveis existem e são recebidas na função corretamente:
mysqldump --host=sistema-db --user=root --password='senha' --lock-tables sistema > sistema_backup_20240726_013253.sql


Este é o resultado quando o código entra na condição if (!file_exists($backupFile))
Error: backup file was not created
NULL


O objetivo é baixar diretamente o arquivo de backup para minha máquina, sem salvar o backup no servidor. Seja ele um .SQL ou um arquivo compactado em .ZIP ou outro formato.
Se deixo o código executar com este IF comentado ele me dá um arquivo vazio - zerado - quando acesso a url de download no método GET.
Não há erro no log do PHP recente antes da execução do if (!file_exists($backupFile))

O código está abaixo, como melhorá-lo para fazê-lo funcionar?




public function BackupDatabaseData($tableName = null) {
$dbname = $this->dbname;
$dbserver = $this->dbserver;
$username = $this->dbuser;
$password = $this->dbpass;

// Get the current date and time
$datetime = date('Ymd_His');

// Generate a unique filename with date and time
$backupFile = $tableName ? "{$dbname}_{$tableName}_backup_{$datetime}.sql" : "{$dbname}_backup_{$datetime}.sql";
$zipFile = "{$backupFile}.zip";

// Construct the mysqldump command
$command = "mysqldump --host=$dbserver --user=$username --password='$password' --lock-tables $dbname";

if ($tableName) {
$command .= " $tableName";
}
$command .= " > $backupFile";

// Execute the command
shell_exec($command);

// Check if the backup file was created
if (!file_exists($backupFile)) {
echo "Error: backup file was not created <br><br>";
var_dump(error_get_last());
exit;
}

// Check if file size exceeds a limit (e.g., 20MB)
$fileSize = filesize($backupFile);
$maxSize = 20 * 1024 * 1024; // 20MB

if ($fileSize > $maxSize) {
// Compress the backup file
shell_exec("zip $zipFile $backupFile");

// Send the compressed file for download
header('Content-Type: application/zip');
header("Content-Disposition: attachment; filename=\"$zipFile\"");
readfile($zipFile);

// Remove the temporary files
unlink($backupFile);
unlink($zipFile);
} else {
// Send the backup file for download
header('Content-Type: application/sql');
header("Content-Disposition: attachment; filename=\"$backupFile\"");
readfile($backupFile);

// Remove the temporary file
unlink($backupFile);
}
}



  


2. Re: Ajuda com PHP para backup do banco de dados usando MySQLDump

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 26/07/2024 - 09:30h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts