IT News > トピックス > PHP Tips > バックグラウンドで処理させる

外部プログラム実行

時間のかかるプログラムをバックグラウンドで動かしたい

system 関数や、exec 関数の関数リファレンスを見ると、次のような記述があります。

「この関数を使用してプログラム実行を開始し、バックグラウンドで実行したままにしたい場合には、プログラムの出力をファイルまたは他の出力ストリームにリダイレクトする必要があることにも注意して下さい。さもないと、PHPはそのプログラムの実行が終了するまでハングします。 」

この文章の意味は、下記のプログラムのように記述しなさいという意味です。

system("/home/your/bgprog $arg1 $arg2 > /dev/null &");

ここで、bgprog は、バックグラウンドで走らせたいプログラムです。どんな言語で書いてもかまいません。また、上記例のようにメインの処理から引数を渡したい場合には、bgprog 側できちんと受け取るようにしておかなければなりません。

sleep.sh

sleep 10
<?
  system("/bin/sh /home/your/sleep.sh > /dev/null &");
  echo "OK.";
?>

抜粋URL
http://www.stackasterisk.jp/tech/php/php02_02.jsp;jsessionid=aY3fFohyq8Wc