GNU/Linux >> Znalost Linux >  >> Linux

Jak získat linuxovou konzoli $ COLUMNS a $ ROWS z PHP cli?

$COLUMNS a $LINES se pravděpodobně neexportuje do vašeho programu. Můžete spustit export LINES COLUMNS před spuštěním aplikace, nebo můžete tyto informace získat přímo:

$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);

Další možností shellu, která nevyžaduje analýzu, je tput :

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

Nevím, proč by člověk měl někdy potřebovat grep analyzovat stty výstup:má samostatnou možnost hlásit "počet řádků a sloupců podle jádra".

One-liner, bez chybového zpracování:

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

Jednořádkový, v případě problémů předpokládejte, že oba řádky/sloupce jsou 0 a potlačte jakýkoli chybový výstup:

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

Použijte PHP ncurses_getmaxyx funkce.

ncurses_getmaxyx (STDSCR, $Height, $Width)

PŘEDCHOZÍ:

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

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

"Správným" způsobem je pravděpodobně zavolat TIOCGSIZE ioctl, abyste získali představu jádra o velikosti okna, nebo zavolejte příkaz stty -a a analyzujte výsledky pro rows a columns


Linux
  1. Linux:Jak získat dobu načítání vzdálené stránky pomocí příkazu z terminálu?

  2. Jak získat šířku okna konzoly Linux v Pythonu

  3. Jak používat sched_getaffinity a sched_setaffinity v Linuxu z C?

  1. Jak získat geolokaci z příkazového řádku v Linuxu

  2. Jak odeslat e-mail s přílohou a tělem z Linuxu

  3. Jak získat název hostitele z IP (Linux)?

  1. Jak nainstalovat a nakonfigurovat Nginx ze zdroje na Linuxu

  2. Jak opravit problém s protokolem Curl TLS SSL z kódu CLI a PHP

  3. Jak přiblížit a oddálit terminálovou konzoli v linuxu