exec()とsystem(),passthru()の違いって何ぞや
もう7月が終わろうとしています。
MySQLでIMPORTみたいなことができないか?と聞かれたならば
mysqlimportとか使えば良いじゃん、となるかと思います。
mysqlimport自体は
https://dev.mysql.com/doc/refman/5.1/ja/mysqlimport.html に。
さて話は変わって、PHPを使ったコマンドの実行には
- exec() http://www.php.net/manual/ja/function.exec.php
- system() http://www.php.net/manual/ja/function.system.php
- passthru() http://php.net/manual/ja/function.passthru.php
があったり。
いつ、どれを使えばいいのでしょう?
各々の働きは、
exec()は外部のプログラムを実行して、引数に入れてくれる関数
system()は外部のプログラムを実行、標準ストリームに出力する関数
passthru()はexec()やsystem()の代わりとして用いられる関数
となっています。
普通、コマンド実行したいだけならば、exec()関数を用いるみたい。
返り値はsystem()関数と同じ、コマンド実行結果の最後の行なのですが、
結果を吐くところが標準出力なのかどうか、という違い。
passthru()関数は、すべての結果を返してくれるもの。
manualでは、
content-type を image/gif に設定して、gifを出力するpbmplus プログラムを呼び出すことにより、直接画像を出力する PHP スクリプトを作成 することができます。
と書かれています。
コマンドからのすべての結果(バイナリデータ)を受け取りたい場合に使用します。
加工されていない生データを受け取りたいときって、どういうときなのかな?
以上、大雑把に書き記しました。