ubuntu

如何监控Ubuntu PHP日志实时变化

小樊
46
2025-04-02 23:42:53
栏目: 编程语言

要监控Ubuntu PHP日志的实时变化,可以使用以下几种方法:

使用 tail 命令

tail 命令是实时显示日志内容的最常用方法。你可以使用以下命令来实时监控 PHP 日志文件的变化:

tail -f /var/log/php7.0-fpm.log

或者,如果你想要监控多个日志文件,可以使用 multitail 命令:

sudo apt install multitail  # 安装 multitail
multitail /var/log/php7.0-fpm.log /var/log/php7.0-fpm.error.log

使用 PHP 脚本

你可以编写一个简单的 PHP 脚本来监控日志文件的变化。以下是一个示例脚本:

<?php
$logFile = '/var/log/php7.0-fpm.log';
$fileSize = filesize($logFile);

while (true) {
    clearstatcache();
    $currentSize = filesize($logFile);
    if ($currentSize > $fileSize) {
        $handle = fopen($logFile, 'r');
        fseek($handle, $fileSize);
        $content = fread($handle, $currentSize - $fileSize);
        fclose($handle);
        echo $content;
        $fileSize = $currentSize;
    }
    sleep(1);
}
?>

将上述代码保存为 log_monitor.php,然后使用 PHP 运行它:

php log_monitor.php

使用 WebSocket

WebSocket 是一种全双工通信协议,可以实现实时的双向通信。你可以使用 PHP 的 WebSocket 库来创建一个 WebSocket 服务器,并在客户端上通过 JavaScript 接收和显示日志内容。

以下是一个简单的 WebSocket 服务器示例:

<?php
require 'WebSocketServer.php';

$server = new WebSocketServer();
$server->bind('0.0.0.0', 8000);
$server->run();

function onLogChange($log) {
    global $server;
    $server->sendAll($log);
}

$logFile = '/var/log/php7.0-fpm.log';
$server->setLogChangeListener('onLogChange');
$server->setLogFile($logFile);
?>

在客户端,你可以使用 JavaScript 的 WebSocket API 来连接到 WebSocket 服务器,并接收和显示日志内容:

var socket = new WebSocket('ws://localhost:8000');
socket.onmessage = function(event) {
    console.log(event.data);
};

这些方法可以帮助你实时监控 Ubuntu 系统中 PHP 日志的变化,并及时采取相应的措施。

0
看了该问题的人还看了