使用strace -ttp 16178
kill -SIGALRM 16178
看起來是業(yè)務(wù)自己創(chuàng)建了子進(jìn)程,并調(diào)用pcntl_wait 等待子進(jìn)程退出??聪聵I(yè)務(wù)或者業(yè)務(wù)使用的庫是否有調(diào)用pcntl_fork、 pcntl_wait
如果你確定exec是慢任務(wù),可以不用管它。busy狀態(tài)表明當(dāng)前進(jìn)程在忙于業(yè)務(wù),并不一定產(chǎn)生了問題。exec函數(shù)不支持超時,即使你設(shè)置了超時參數(shù)比如2秒,status狀態(tài)還是busy。
你用 proc_open 代替exec吧,proc_open用法看下php手冊。每次執(zhí)行的時候設(shè)定一個定時器,比如2秒后關(guān)閉proc_open打開的進(jìn)程。
偽代碼類似
$r = proc_open();
Timer::add(2, function() use ($r) {
proc_close($r);
});