phpでexecを使った非同期処理

phpでexecを使った非同期処理メモ。
使い方は知ってたけど使ったことなかったので試してみた。
$cmdを配列にすればもっと並走させられます。

<?php

// 重い処理
$cmd = "php heavy.php > /dev/null &";

// 非同期処理したいものをコマンドで渡す
_exec($cmd);

// ToDo : 別のことしててもいい

// 非同期処理完了待
_wait($cmd);


function _exec($cmd) {
    exec($cmd);
}

function _wait($cmd) {
    while (true) {
        exec("ps x | grep \"" . $cmd . "\" | grep -v grep", $output);
        if (count($output) <= 0) {
            break;
        }
    }
}

?>