Пишем мелкие приложения на PHP-GTK
14.02.2009
О том что я арендовал выделенный сервер слабее чем был у меня раньше я уже упоминал (что поделаешь… кризис… всем не легко). Так приходится отслеживать его нагрузку постоянно. Сегодня, например, пока я спал, нагрузка взлетела до небес и сервер всё это время был в не рабочем состоянии. Я уже планирую написать утилиту для автоматического отслеживания нагрузки и принятия необходимых мер, но сейчас не об этом.
Так вот. Пока я бодрствую я постоянно слежу за нагрузкой (у меня открыто окно консоли в которое я постоянно заглядываю, и есть у меня и утилитка отправляющая мне смс на телефон в случае повышения нагрузки, но я ей не пользуюсь так как постоянно сижу за компом). Но, ведь мне надо и другими делами заниматься, поэтому я решил написать небольшую утилитку, которая бы висела поверх всех окон и отображала бы текущую нагрузку на сервере в реальном времени.
Так как я программирую на PHP, поэтому я и решил написать программку на этом языке. Для этого существует специальная библиотека PHP-GTK (http://gtk.php.net). Ее изучение заняло у меня не более 10 минут (именно для написания простой утилиты, я не говорю о чем то более сложном). Вот код моей утилитки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php //создаем надпись, в которой и будет отображаться нагрузка системы $lbl = new GtkLabel('LoadAvg'); //каждые 3 секунды будет запускаться функция gotLA и обновлять надпись Gtk::timeout_add(3000, 'gotLA', $lbl); function gotLA($lbl) { $la = file_get_contents("http://server/la.php"); $lbl->set_text($la); //вставляем полученный текст в надпись return true; } $wnd = new GtkWindow(); $wnd->set_title('LoadAvg'); $wnd->connect_simple('destroy', array('gtk', 'main_quit')); $wnd->add($lbl); $wnd->show_all(); Gtk::main(); ?> |
Вот так всего в пару строк кода у нас получилось очень нужное мне приложение. Комментирования тут заслуживают только первые строчки(что я и сделал). Остальное взято из программки Hello World.
Вместо “server” у меня стоит айпишник моего сервера. И на самом сервере я создал простенький скрипт всего с одной строкой echo exec(“cat /proc/loadavg”);, которая просто выводит текущую нагрузку на сервер.
Вот как эта программка выглядит:
Средствами самой системы, в настройках окна я сделал чтобы программка отображалась всегда поверх всех окон. Еще бы убрать шапку у окна, но это уже следующий этап изучения php-gtk, а пока меня устраивает и такой вариант.
А кодинг la.php можете привести?
Код la прост. Вот он:
< ?php $la = exec("cat /proc/loadavg"); echo $la; ?>
В Linux сделать окно всегда поверх остальных окон легко средствами самой системы, а вот для тех же целей в Windows есть такая полезная программка AlwaysOnTopMaker