この UNIX コマンドをシェルで直接実行すると、次のようになります。
$ sleep 100 &
sleep は期待どおりバックグラウンドで実行され、コマンド ラインで作業を続けることができます。
しかし、shell_exec() と php で同じことをしようとすると、異なる結果が得られます。
<?php
$sleep = $argv[1];
$shell="sleep " . $sleep . " &";
shell_exec($shell);
?>
コマンドラインを実行するphp sleep.php 100
とハングし、スリープが終了するまでそれ以上コマンドを受け入れません。shell_exec()
これが/$argv
の php または unix シェルで欠けているニュアンスであるかどうかはわかりません。
ありがとう。