2013-12-26 4 views
1

Я пытаюсь сделать своего рода отображение в реальном времени для моего проекта, который работает как приложение CLI для PHP, и у меня возникли трудности с очисткой консоли и бывает.PHP CLI для Windows и «статистика в реальном времени gui»

По сути, моя конечная цель что-то вроде этого:

--------------------------------------------------------------- 
|           [ _ ] [ [] ] [ X ] | 
--------------------------------------------------------------- 
| Lag: 120 ms    Foo: 1240 bar  Users: 240,000 | 
| Some stat: 12434 things Status: connected Cake: nominal | 
|     -------------------------     | 
| Some form of console output here, buffered so I can clear | 
| the screen with no worries and it will display nicely to | 
| the end user. A couple of lines of stats, and this output | 
| buffer will suffice, no need for any interactivity. Keeping | 
| the positions of the stats and output static increase  | 
| readability since I can just check at a glance, and keep my | 
| output constantly refreshing instead of every few seconds. | 
--------------------------------------------------------------- 

, который будет обновлять немерцающим и не вызвать фактический буфер командной строки для прокрутки или увеличить количество строк в буфере за вертикальную высоту ,

Я протестировал \r на небольшой фрагмент текста, и он действительно мог бы перезаписать его без мерцания. Однако, если этот бит текста был больше одной строки (который, я считаю, 80 символов, исправьте меня, если я ошибаюсь), то он не перезаписывал всю строку, даже если эта строка была разбита на размер окна, а чем на \n или \n\r. И поэтому я отказался от этого подхода.

Я затем обратился к Ansi Escape Codes и ncurses, только чтобы понять, что нет, они фактически не применяются к командной строке на Windows 7, как это применяет PHP.

Как добиться желаемого эффекта в Windows 7 без использования альтернативной командной строки или установки каких-либо подключаемых модулей?

ответ

1

Я думаю, что вы ищете неправильное решение. Вы можете заглянуть в вызов Win32 API с PHP, но я предлагаю вам просто запустить PHP-демон через MSYS и использовать escape-коды ANSI. Это должно делать именно то, что вы хотите.

Смежные вопросы