spatie / laravel-backup

A package to backup your Laravel app
https://spatie.be/docs/laravel-backup
MIT License
5.62k stars 761 forks source link

Maximum execution time (and --timeout flag) is overridden to 300 seconds #1297

Closed JackWH closed 3 years ago

JackWH commented 3 years ago

On version 7.5.2, when calling php artisan backup:run --timeout=900, the 900-second timeout I've specified is not being honoured.

This is on a Laravel Forge server, and I've even set the PHP maximum execution time to 900 seconds in the Forge control panel too. So it seems as though somewhere in the code, the timeout is being reset to 300 seconds...

▶ php artisan backup:run --timeout=900

Starting backup...
Dumping database mysite...
Backup failed because The process "(((('mysqldump' --defaults-extra-file="/tmp/php1P0XbZ" --skip-comments --extended-insert --single-transaction --default-character-set=utf8mb4 mysite; echo $? >&3) | gzip > "/home/forge/mysite.example/storage/backups/tmp/temp/db-dumps/mysql-mysite.sql.gz") 3>&1) | (read x; exit $x))" exceeded the timeout of 300 seconds..
#0 /home/forge/mysite.example/vendor/symfony/process/Process.php(425): Symfony\Component\Process\Process->checkTimeout()
#1 /home/forge/mysite.example/vendor/symfony/process/Process.php(249): Symfony\Component\Process\Process->wait()
#2 /home/forge/mysite.example/vendor/spatie/db-dumper/src/Databases/MySql.php(141): Symfony\Component\Process\Process->run()
#3 /home/forge/mysite.example/vendor/spatie/laravel-backup/src/Tasks/Backup/BackupJob.php(257): Spatie\DbDumper\Databases\MySql->dumpToFile()
#4 [internal function]: Spatie\Backup\Tasks\Backup\BackupJob->Spatie\Backup\Tasks\Backup\{closure}()
#5 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Collections/Collection.php(640): array_map()
#6 /home/forge/mysite.example/vendor/spatie/laravel-backup/src/Tasks/Backup/BackupJob.php(260): Illuminate\Support\Collection->map()
#7 /home/forge/mysite.example/vendor/spatie/laravel-backup/src/Tasks/Backup/BackupJob.php(175): Spatie\Backup\Tasks\Backup\BackupJob->dumpDatabases()
#8 /home/forge/mysite.example/vendor/spatie/laravel-backup/src/Tasks/Backup/BackupJob.php(149): Spatie\Backup\Tasks\Backup\BackupJob->createBackupManifest()
#9 /home/forge/mysite.example/vendor/spatie/laravel-backup/src/Commands/BackupCommand.php(54): Spatie\Backup\Tasks\Backup\BackupJob->run()
#10 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Spatie\Backup\Commands\BackupCommand->handle()
#11 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#12 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#13 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#14 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Container/Container.php(611): Illuminate\Container\BoundMethod::call()
#15 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Illuminate\Container\Container->call()
#16 /home/forge/mysite.example/vendor/symfony/console/Command/Command.php(256): Illuminate\Console\Command->execute()
#17 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\Component\Console\Command\Command->run()
#18 /home/forge/mysite.example/vendor/spatie/laravel-backup/src/Commands/BaseCommand.php(18): Illuminate\Console\Command->run()
#19 /home/forge/mysite.example/vendor/symfony/console/Application.php(971): Spatie\Backup\Commands\BaseCommand->run()
#20 /home/forge/mysite.example/vendor/symfony/console/Application.php(290): Symfony\Component\Console\Application->doRunCommand()
#21 /home/forge/mysite.example/vendor/symfony/console/Application.php(166): Symfony\Component\Console\Application->doRun()
#22 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Console/Application.php(92): Symfony\Component\Console\Application->run()
#23 /home/forge/mysite.example/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\Console\Application->run()
#24 /home/forge/mysite.example/artisan(37): Illuminate\Foundation\Console\Kernel->handle()
#25 {main}
Backup failed because: The process "(((('mysqldump' --defaults-extra-file="/tmp/php1P0XbZ" --skip-comments --extended-insert --single-transaction --default-character-set=utf8mb4 mysite; echo $? >&3) | gzip > "/home/forge/mysite.example/storage/backups/tmp/temp/db-dumps/mysql-mysite.sql.gz") 3>&1) | (read x; exit $x))" exceeded the timeout of 300 seconds..
alcarazolabs commented 3 years ago

Hey bro, did you solved this problem? I want backup big databases, any recomendation? php.ini changes? time out configurations in config/database.php? 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'timeout' => 60 * 5, // 5 minute timeout 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],