GNU/Linux >> Linux の 問題 >  >> Linux

PHP cli から Linux コンソールの $COLUMNS と $ROWS を取得するには?

$COLUMNS$LINES プログラムにエクスポートされていない可能性があります。 export LINES COLUMNS を実行できます アプリを実行する前に、またはこの情報を直接取得できます:

$fp=popen("resize", "r");
$b=stream_get_contents($fp);
preg_match("/COLUMNS=([0-9]+)/", $b, $matches);$columns = $matches[1];
preg_match("/LINES=([0-9]+)/", $b, $matches);$rows = $matches[1];
pclose($fp);

解析を必要としない別のシェル オプションは tput です。 :

$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')

なぜ grep が必要なのかわからない stty を解析する 出力:「カーネルに応じた行数と列数」を報告する別のオプションがあります。

ワンライナー、エラー処理なし:

list($rows, $cols) = explode(' ', exec('stty size'));

ワンライナー、問題が発生した場合に行/列の両方が0であると想定し、エラー出力を抑制します:

list($rows, $cols) = explode(' ', @exec('stty size 2>/dev/null') ?: '0 0');

PHP ncurses_getmaxyx を使用する 関数。

ncurses_getmaxyx (STDSCR, $Height, $Width)

以前:

http://php.net/manual/en/function.getenv.php

$cols = getenv('COLUMNS');
$rows = getenv('ROWS');

「適切な」方法は、おそらく TIOCGSIZE を呼び出すことです ioctl を使用してカーネルのウィンドウ サイズを取得するか、コマンド stty -a を呼び出します。 rows の結果を解析します および columns


Linux
  1. Linux から添付ファイルと本文を含むメールを送信する方法

  2. Linux でソースから Nginx をインストールして構成する方法

  3. CLI および PHP コードから Curl TLS SSL プロトコルの問題を修正する方法

  1. Python で Linux コンソール ウィンドウの幅を取得する方法

  2. C から Linux で sched_getaffinity と sched_setaffinity を使用するには?

  3. IP (Linux) からホスト名を取得するには?

  1. Linuxでコマンドラインからジオロケーションを取得する方法

  2. Linux:ターミナルからのコマンドでリモートページの読み込み時間を取得するにはどうすればよいですか?

  3. bashからネットマスクを取得するには?