0

我有一个 PHP 脚本,它下载两个巨大的 sql 文件(每个大约 200MB)。第一个做一堆东西,然后它调用第二个。从命令行,我可以输入这两行,它工作正常:

> cd /path/to/the/sql/files
> mysql -uroot -ppassword < firstfile.sql

但是当我让 PHP 尝试执行第一个文件时,它无法启动第二个文件,大概是因为 PHP 在不同的目录中运行。我试图这样做,这可能真的很幼稚:

exec("cd /path/to/the/sql/files");
exec("mysql -uroot -ppassword < firstfile.sql");

有没有办法让第二个 exec() 知道要从哪个目录运行?

4

2 回答 2

1

当该进程退出时,在被分叉以执行您的 cd 命令的进程中修改的环境将丢失,因此不会影响第二个命令的执行。

如果您不能通过提供数据文件的完整路径来使其工作,您可以通过在同一个 exec() 中执行 cd 命令和 mysql 命令来使其工作,用分号分隔它们。

exec("cd /path/to/the/sql/files; mysql -uroot -ppassword < firstfile.sql");
于 2012-05-05T04:58:25.857 回答
0

您可以将完整路径放在行首:

exec("/path/to/mysql -uroot -ppassword < firstfile.sql");

于 2012-05-05T04:52:08.000 回答