GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendapatkan konsol linux $COLUMNS dan $ROWS dari PHP cli?

$COLUMNS dan $LINES mungkin tidak diekspor ke program Anda. Anda dapat menjalankan export LINES COLUMNS sebelum menjalankan aplikasi Anda, atau Anda bisa mendapatkan informasi ini secara langsung:

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

Opsi shell lain yang tidak memerlukan penguraian adalah tput :

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

Entahlah, mengapa seseorang harus membutuhkan grep untuk mengurai stty keluaran:ia memiliki opsi terpisah untuk melaporkan "jumlah baris dan kolom menurut kernel".

One-liner, tidak ada penanganan kesalahan:

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

One-liner, asumsikan kedua baris/kolom menjadi 0 jika terjadi masalah dan sembunyikan keluaran kesalahan apa pun:

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

Gunakan PHP ncurses_getmaxyx fungsi.

ncurses_getmaxyx (STDSCR, $Height, $Width)

SEBELUMNYA:

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

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

Cara yang "tepat" mungkin adalah dengan memanggil TIOCGSIZE ioctl untuk mendapatkan ide kernel tentang ukuran jendela, atau panggil perintah stty -a dan uraikan hasilnya untuk rows dan columns


Linux
  1. Cara Mendapatkan Geolokasi Anda Dari Commandline Di Linux

  2. Cara memperbesar dan memperkecil konsol terminal di linux

  3. Bagaimana cara mendapatkan netmask dari bash?

  1. Cara Mengirim Email Dengan Lampiran dan Isi dari Linux

  2. Cara Menginstal dan Mengkonfigurasi Nginx dari Sumber di Linux

  3. Cara Memperbaiki Masalah Protokol SSL TLS Curl dari CLI dan Kode PHP

  1. Linux:Bagaimana cara mendapatkan waktu buka halaman jarak jauh dengan perintah dari terminal?

  2. Cara mendapatkan lebar jendela konsol Linux dengan Python

  3. Bagaimana cara menggunakan sched_getaffinity dan sched_setaffinity di Linux dari C?