PHPのexec関数で非同期実行する方法を解説!

PHPのexec関数で外部プログラムを実行することが出来ますが、exec関数でコマンドを非同期に実行する(バックグラウンド実行する)方法を解説します。

コンテンツ [表示]

  1. 1PHPのexec関数で非同期実行させたい
  2. 2PHPのexec関数で非同期実行する方法

PHPのexec関数で非同期実行させたい

PHPのexec関数は外部プログラムを実行できる関数ですが、引数にコマンドを渡すとそのコマンドの実行を行います。

exec関数の例

<?php
exec('date');

そしてexec関数を実行した時にはそのコマンドの結果が返ってくるまで現在実行しているプログラムは待ちの状態になります。

しかし、時にPHPのexec関数を使う場合で非同期にコマンドを実行(つまりバックグラウンド実行)させて現在実行しているプログラムの動作はそのまま動かしたい場合があります。

そこで今回はPHPのexec関数で非同期実行する方法を解説します。

PHPのexec関数で非同期実行する方法

PHPのexec関数で非同期実行するには下記のようにします。

exec関数で非同期実行させるコード

exec('コマンド > /dev/null &');

ポイントとしては> /dev/null &の部分です。

>で出力のリダイレクトを行い、それが/dev/nullのため結果的に出力しないこと(戻り値無し)になります。

&でコマンドの非同期実行ができるため上記の書き方でコマンドを非同期実行させる事が出来ます。

例えば処理に時間のかかるバックアップ用のスクリプトファイル(backup.php)を実行させたい場合は下記のようにします。

exec関数で非同期実行させるコード例

exec('php backup.php > /dev/null &');
GeekHive採用サイト

関連記事