Get online information of RealHelix Server through the POST mode

xiaoxiao2021-03-06  90

Recently, in the current media server, use RealNetworks's Helix Server 9.0.3.916 for Linux version. Because there are multiple servers to provide services, you need to do real-time monitoring of load balancing and server, you need to achieve real-time acquisition server information. I haven't found a good solution for a long time in the streaming media forum, not, there are many big cattle to develop a management plug-in and other stuff, but I don't want to spend money! Through the exploration (even English is very poor, only a little bit), finally discovered that the Custom logging in Server Monitor in the Helix console, HELIX can send the server information through HTTP's POST Out, it is it. Not talk nonsense. Start ~~~~ 系统 系统 系统: Flow Media: Helix Server 9.03 (9.0.3.916) Web: Apache 2.0.50 PHP 5.0.2 Mysql 4.0.21 System: Redhat Enterprise Linux Advanced Server 3 Update 3 1. Build a library ServerStat 2. Create Table ServerList Create Table `ServerList` (` ServerID` Tinyint (2) unsigned not null default '0', `Servername` VARCHAR (32) Not null default ',` Serverip` Varchar (16) NOT NULL Default ', `CPUUSAGE` INT (8) Unsigned Not Null Default' 0 ',` serveruptime` int (11) Not null default' 0 ', `adminport` VARCHAR (5) Not null default' , `Clientnum` int (4) unsigned not null default '0',` Bandwidth` VARCHAR (20) Not null default ', `Infotime` DateTime Not Null Default' 0000-00-00 00:00:00 ', Primary Key (`ServerID`), UNIQUE Key` Serverip` (`Serverip`) Type = Myisam; add your server information in the table, IP address must have, other do not do

3. The PHP program The following is a small program that gains streaming server information. MySql.inc.php used in the program is a class I found on the Internet. It is too long. If you can't find it. MySQL.inc.php can write to me: crazyMouse @ 163.com, in addition to the database of IP, users, passwords outside of the database, huh, huh host = $ dbhostname; $ db-> database = $ dbdatabase; $ db -> User = $ dbuser; $ db-> password = $ dbpassword; $ db-> connect (); $ debug = 0; // Debug, output query_string to server.log file

$ DateTime = Date ("YMD H: I: S"); $ clientnum = $ _ post ['client_count']; $ serverip = $ _ server ['remote_addr']; $ cpuusage = $ _ post ['cpu_usage']; $ Bandwidth = $ _ Post ['bandwidth_output']; $ filenum = intVal ($ _ post ['filenum']); $ serverUptime = $ _POST ['Server_uptime'];

$ Query_string = "update ServerList set ServerUptime =". $ Serveruptime. ", ClientNum =". $ Clientnum. ", InfoTime = '". $ Datetime. "', BandWidth = '". $ Bandwidth. "' Where ServerIP = ' "$ serverip."; ";

IF ($ debug) {// debug $ fError = fopen ("Server.log", "A "); if (! fwrite ($ FERROR, $ query_string. "/ n")) {exit;}} $ db -> Query ($ query_string); $ db-> free_result (); exit ();> A test program for displaying server status information, judges the difference between the current time and the server report time, if more than 60 seconds, basically The server hangs. As for the issue of ensuring streaming media server and web server time synchronization, you can solve it through NTP. You don't say it. Inc.php "); include_once (" ../ incrude / mysql.inc.php ");

$ db = new SQL (); $ db-> host = $ dbhostname; $ db-> database = $ db-> user = $ dbuser; $ db-> password = $ dbpassword; $ db-> connect $ NOWTIME = DATE ("YMD H: I: S"); $ query_string = "SELECT *, UNIX_TIMESTAMP ('". $ nowtime. "') - Unix_TimeStamp (Infotime) as Overtime from ServerList"; $ db-> Query ($ query_string);

Echo ""; echo ""; echo ''; Echo ' server status. < / title> '; echo' <meta http-equiv = "refresh" Content = "5"> Echo '</ head>'; echo '<body>'; echo '<table align = center width = "590 "border =" 1 "cellspacing =" 0 "cellpadding =" 0 "> <tr> <td width =" 120 "> <div align =" center "> server name </ div> <td> <TD width = "120"> <div align = "center"> server IP address </ div> </ td> <td width = "61"> <div align = "center"> number online number </ div> </ td> < Td width = "186"> <div align = "center"> Status report time </ div> </ td> <td width = "80"> <div align = "center"> Run State </ div> </ TD> </ tr> '; for (;;) {IF ($ db-> next_record ()) {echo' <tr> '; echo' <TD> <div align = "center"> '. $ dB- > f ("ServerName"). '</ div> </ td>'; Echo '<TD> <div align = "center"> <a href="http: //' (" Serverip "). ':'. $ Db-> f (" adminport "). '/ Admin / index.html">'. $ Db-> f ("Serverip"). '</a> </ div> </ td> '; echo' <TD> <div align = "center"> '. $ db-> f ("clientnum").' </ div> </ td> '; echo' <TD> <</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-95552.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="95552" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.029</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'nRirI_2BHzhxHib273Iv4Q2CHOI8P8FizYwL1fQm7DL4Nk_2FdZO7jrAJaqhyx6uh1r4Lc8XG_2FiKbDgeb9q1V0_2BlxQ_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>