よく使うので自分用メモ。
// 実行ファイル(.php)パス $execFilePath = '/path/to/target.php'; // パラメーターを渡したい場合は以下の通り $arg1 = 'param1'; $arg2 = 'param2'; $arg3 = 'param3'; $arg4 = 'param4'; $arg5 = 'param5'; // 実行コマンドを整形する(最後のアンパサンドは、処理をバックグラウンドで行うという意味) $cmd = "nohup php -c '' '".$execFilePath."' '".$arg1."' '".$arg2."' '".$arg3."' '".$arg4."' '".$arg5."' > /dev/null &"; // バックグラウンド実行されたコマンドのプロセスIDを取得したい場合は、実行コマンドの末尾を以下のようにする $cmd = "nohup php -c '' '".$execFilePath."' '".$arg1."' '".$arg2."' '".$arg3."' > /dev/null & echo $!"; // 実行する。 $output = array(); // $outputにバックグラウンドで実行中のプロセスIDが格納されている exec($cmd, $output);
なぜ「echo $!」でプロセスIDが取得できるのかというと、Linuxがバックグラウンド処理中のPIDを変数$!に突っ込んでくれているからである。