最終更新日: 2021年1月13日
PHPのexec関数で非同期実行する方法を解説!
PHPのexec関数で外部プログラムを実行することが出来ますが、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 &');