2012-05-05 5 views
0

私は2つの巨大なsqlファイル(それぞれ約200MB)をダウンロードするPHPスクリプトを持っています。最初のものはたくさんのものを行い、次にそれは第2のものを呼び出します。コマンドラインから、私はこれらの2行を入力することができますし、それが正常に動作します:別のディレクトリからphpでexec()経由でsqlファイルを呼び出していますか?

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

しかし、私はPHPは()のexecを行うには、最初のファイルを試していたときにPHPがあるので、それはおそらく、第二のファイルの起動に失敗別のディレクトリで動作しています。私はおそらく本当にナイーブである、これを実行しようとしました:

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

から実行するために、どのディレクトリを知るために、第2のexec()を取得する方法はありますか?

+1

「...

答えて

0

あなたは、行の先頭に完全なパスを入れることができます。

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

1

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

データファイルへのフルパスを与えることで動作させることができない場合は、同じexec()でcdコマンドとmysqlコマンドの両方を実行し、セミコロンで区切って動作させることができます。

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