ちょっとハマったので備忘録も兼ねてまとめ。
…まあ、結局別の方法を使っちゃったんですけどね。
使用する関数は、タイトルにもある通り exec()
関数です。
PHP マニュアルのページは下記からご確認ください。
PHP: exec – Manual
https://www.php.net/manual/ja/function.exec.php
サンプルコードは下記のとおりです
exec('[実行するコマンド] > /dev/null &');
> /dev/null &
を追加すると戻り値がなくなります。
また、末尾に &
を付けると、バックグラウンド処理で実行するという意味になります。
基本的にはこんな感じですが、個人的に覚えておきたいのはパラメータを渡す方法です。
例えば、ただコマンドを実行するだけでなく、$_GET や $_POST のように値を渡したい時があるかと思います。
そんなときのコードの書き方がこちら。
まず、呼び出すときの書き方。
exec("php [実行したいPHPファイル] [値1] [値2] > /dev/null &");
で、こちらが呼び出されるときの書き方です。
$value1 = $argv[1]; // 値1 $value2 = $argv[2]; // 値2
$argv
を使うと、渡されたパラメータを呼び出される側で受け取ることができます。
なお、$argv[0]
には実行されたコマンド、今回のサンプルでは php [実行したいPHPファイル]
が入ります。
以上、PHP の非同期処理の書き方でした。
他にもライブラリを使う方法なんかもありましたが、開発環境の都合上、自由にライブラリの追加が出来なかったので、こちらの方法を試してみました。
ご参考になれば幸いです。