2014年11月11日火曜日

php: system, exec 等 で sleep 処理を含むバックグラウンドプロセスの実行

1. <?php $a = time(); `sleep 3`; echo time() - $a;

この結果は3秒待たされて3と出力される。

2. <?php $a = time(); `sleep 3 &`; echo time() - $a;

この結果も3秒待たされて3と出力される。

3. <?php $a = time(); `sleep 3 >/dev/null &`; echo time() - $a;

この結果も3秒待たされて3と出力される。

4. <?php $a = time(); `sleep 3 >/dev/null 2>&1 &`; echo time() - $a;

この結果は待たされずに0と出力される。phpプロセスは3秒後に終了する。

5. <?php $a = time(); echo `sleep 3 >/dev/null 2>&1 & echo $! &`; echo time() - $a;

この結果は待たされずに29617などsleep 3のプロセスIDと時間測定結果0とが出力される。phpプロセスは3秒後に終了する。


やむを得ずphp/web-UI系で非同期処理を仕込む際に少々挙動確認を要したので備忘録。


0 件のコメント:

コメントを投稿