0

2 つの巨大な SQL ファイル (それぞれ約 200MB) をダウンロードする PHP スクリプトがあります。最初のものはたくさんのことを行い、次に2番目のものを呼び出します。コマンド ラインから次の 2 行を入力すると、問題なく動作します。

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

しかし、PHP で最初のファイルを exec() しようとすると、おそらく PHP が別のディレクトリで動作しているため、2 番目のファイルを起動できません。私はこれをやろうとしましたが、これはおそらく本当に素朴です:

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

2 番目の exec() を取得して、どのディレクトリから実行するかを知る方法はありますか?

4

2 に答える 2

1

cd コマンドを実行するためにフォークされたプロセスで変更された環境は、そのプロセスが終了すると失われるため、2 番目のコマンドの実行には影響しません。

データ ファイルへのフル パスを指定しても機能しない場合は、同じ 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 に答える