Building a real-time monitoring system based on Workerman
With the continuous development of the Internet and information technology, real-time monitoring systems have received more and more attention from all walks of life. The real-time monitoring system can be used to monitor servers, network equipment, sensor data, etc., detect problems in a timely manner and take corresponding measures. In this article, we will introduce how to build a simple real-time monitoring system using the PHP framework Workerman.
Workerman is a high-performance SOCKET server framework developed purely in PHP, which can push data to the browser in real time through PHP code. It is lightweight, high-performance, and easy to expand, and is very suitable for the development of real-time monitoring systems.
First, we need to install Workerman on the server. It can be installed through the following command:
composer require workerman/workerman
After the installation is completed, we first create a simple monitoring server file server.php, the code is as follows:
<?php require_once __DIR__.'/vendor/autoload.php'; use WorkermanWorker; $monitor = new Worker('websocket://0.0.0.0:2345'); $monitor->count = 4; $monitor->onWorkerStart = function($monitor) { echo "监控服务器启动 "; }; $monitor->onMessage = function($connection, $data) { global $monitor; // 处理从客户端接收到的数据 // 这里可以进行数据处理和分析,并将结果推送给客户端 }; Worker::runAll();
In the above code, we first introduce Workerman Frame and create a monitoring server object $monitor. The listening address is websocket://0.0.0.0:2345, which means listening to port 2345 of all IP addresses. Next, set the count attribute of the $monitor object to 4, which means starting 4 monitoring server processes. Finally, we set the onWorkerStart callback function and onMessage callback function of the $monitor object to handle the logic of server startup and receiving client messages.
Next, we write a simple front-end page index.html to display monitoring data. The code is as follows:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>实时监控</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <div id="monitor"></div> <script> var ws = new WebSocket("ws://your-server-ip:2345"); ws.onopen = function(event) { console.log("连接成功"); }; ws.onmessage = function(event) { var data = JSON.parse(event.data); // 处理从服务器接收到的数据 // 这里可以更新前端页面的内容,展示监控数据 }; ws.onclose = function(event) { console.log("连接关闭"); }; </script> </body> </html>
In the above code, we use WebSocket technology to communicate with the server in real time. First create a WebSocket object ws and specify the server's address and port number. Next, we handle the logic of connecting to the server, receiving server data and closing the connection through onopen, onmessage, onclose and other events of the WebSocket object.
Finally, we can write the logic of data processing and analysis in the onMessage callback function in the server.php file, and send data to the front-end page in real time through the WebSocket object. The following is a simple example:
$monitor->onMessage = function($connection, $data) { global $monitor; // 处理从客户端接收到的数据 $result = // 处理和分析数据的逻辑 // 将结果推送给客户端 foreach($monitor->connections as $client) { $client->send(json_encode($result)); } };
In the above code, we first use a variable $result for data processing and analysis, and save the results in it. Then, iterate through all client connections through a foreach loop and use the send method to send the results to each client in the form of a JSON string.
Through the above steps, we have successfully built a simple real-time monitoring system using the Workerman framework. By introducing the index.html file into the front-end page, real-time communication and data display with the monitoring server can be achieved.
Of course, the above example is just a simple demonstration, and the actual real-time monitoring system will be more complex and complete. You can further expand and improve this system according to your own needs, adding more monitoring indicators and functions. I hope this article can help you understand the use of the Workerman framework and the development of real-time monitoring systems.
The above is the detailed content of Building a real-time monitoring system based on Workerman. For more information, please follow other related articles on the PHP Chinese website!