Вполне возможно, что у вас истечет время ожидания, если вы выполняете это на веб-сервере, но PHP работает синхронно, поэтому он никогда не достигнет readfile () до возврата system ().
Так каквы не отправили ничего в фоновый режим с вашей командой, нет ничего, что заставит system () возвращаться до выполнения команды.Реальная проблема в том, что у вас нет проверки ошибок, кроме проверки, существует ли файл, поэтому вам следует проверить код завершения, чтобы убедиться, что mysqldump и gzip успешно выполнены.
Я также хотел бы убедиться, что вы учитываете последствия безопасностииспользование пароля в качестве аргумента командной строки на общих серверах.