(以防万一这是一个 XY 问题):我需要导出一个非常大的表(85M 行),我没有 SSH 访问权限。而且 PhpMyAdmin 和 SQLYog(远程连接)都不能正常工作(它们只导出我表的 3%,并且没有错误地完成导出,不知道为什么)。
所以我想从 PHP 执行 mysqldump,问题是我不确定这是否也会杀死 PHP,因为我看到的代码正在等待 mysqldump 完成。
我的代码将是(未测试):
ini_set('memory_limit', '-1');
set_time_limit(0);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$dbhost = 'localhost';
$dbuser = 'user';
$dbpass = 'pass';
$dbname = 'dbname';
$tableName = 'mytable';
$dumpFile = __DIR__."mydump.sql";
$command = "mysqldump -h$dbhost -u$dbuser -p$dbpass $dbname $tableName | gzip> $dumpFile";
但是我不确定使用“exec”、“shell_exec”或“system”是否更好,或者如果我需要等待输出然后发送文件下载,或者我可以执行命令,完成PHP 脚本,然后在 1 小时左右后返回并通过 FTP 下载文件?(我也担心文件大小,我想大概是 5 或 7GB)。
最好创建 85 个 csv 文件,每个文件有 100 万行?
做这个的最好方式是什么?