これらのコードのいずれかを使用して
system("htop");
//or
exec('htop');
htop からのデータをファイルなどに書き込まないようにする方法 (スクリプトの時間制限は 0 に設定されています)
htop は、終了するまでループで実行されるインタラクティブなプログラムであり、単一の反復を実行してから終了するためのフラグを提供していないようで、出力のキャプチャに問題があります。
top の使用を検討しましたか?-n 1 を使用すると、反復を 1 回に制限できます。
$resp = system("top -n 1");
print $resp;
@d_g の回答に同意します。top は、ターミナルで実行するためのプログラムです。AJAX を使用して top の出力を頻繁に更新することをお勧めします。
さらに、関数に関する情報を追加したいと思いますpassthru()
。この関数は、シェル コマンドの出力を php の stdout に直接出力します。追加の印刷は必要なく、外部プログラムが終了する前に出力を利用できます。コマンドの処理に時間がかかる場合、これは重要です。したがって、次のように置き換えることができます。
$resp = system("top -n 1");
print $resp;
に
passthru('top -n 1');
system
コマンドの結果をexec
文字列として返します。fwriteまたは同様の関数を使用して、出力をファイルに保存します。