$COLUMNS
e $LINES
probabilmente non viene esportato nel tuo programma. Puoi eseguire export LINES COLUMNS
prima di eseguire la tua app, oppure puoi ottenere queste informazioni direttamente:
$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);
Un'altra opzione della shell che non richiede analisi è tput
:
$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')
Non so, perché uno dovrebbe mai aver bisogno di grep
per analizzare stty
output:ha un'opzione separata per riportare "il numero di righe e colonne secondo il kernel".
Una riga, nessuna gestione degli errori:
list($rows, $cols) = explode(' ', exec('stty size'));
Una riga, supponi che entrambe le righe/colonne siano 0 in caso di problemi e sopprimere qualsiasi output di errore:
list($rows, $cols) = explode(' ', @exec('stty size 2>/dev/null') ?: '0 0');
Usa il PHP ncurses_getmaxyx
funzione.
ncurses_getmaxyx (STDSCR, $Height, $Width)
PRECEDENTE:
http://php.net/manual/en/function.getenv.php
$cols = getenv('COLUMNS');
$rows = getenv('ROWS');
Il modo "corretto" è probabilmente chiamare il TIOCGSIZE
ioctl per avere un'idea del kernel sulla dimensione della finestra, oppure chiama il comando stty -a
e analizza i risultati per rows
e columns