Fatal Error: Unexpected BLOG

主に自分用の備忘録として

【PHP】exec関数でPHPスクリプトをキックする

phpのexec関数で別のphpファイルをキックする方法です。

以下のサイトを参考にさせて頂きました。

コード

    exec("nohup php -c '' '/path/to/script.php' 'arg' > /dev/null &");

冒頭の'nohup'はログアウト後にも処理を継続する為のもの。
php.iniファイルのパスを指定する-cの値は空にしてあります。
その次が実行するphpファイルで、その後ろにそのスクリプトに渡す引数を指定します。
で、出力先を'/dev/null'にすることで出力を除去しています。
最後の'&'は処理をバックグラウンドに移行し、後続の処理を実行します。

 

引数の'arg'をscript.php内で参照するには'$argv'変数へアクセスします。この変数は配列になっており、引数の内容は'argv[1]'に格納されます。

argv配列の内容は以下の通り。

    array(2) {
        [0] =>
        string(10) "script.php"
        [1] =>
        string(3) "arg"
    }

0番には常にスクリプトの実行に使われる名前が格納されています。
当然引数が増えれば要素数も増えていきます。

 

重い処理をバックグラウンドで実行しつつ、レスポンスだけを先に返すなんて時に。

忘れないようにメモ。