php模拟tail -f 实时输出日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: php模拟tail -f 实时输出日志

有时候我们需要实时的输出一些日志文件,LINUX下有一个tail命令非常 好用,但我们服务器不是linux或者没有权限时,可以使用以下脚本来实现:

<?php
/**
* php模拟tail -f file.log 实时输出日志
* 请先指定日志目录,调用方式:oblog.php?f=file.log
* 本代码在nginx服务器下可能不能正常工作
*
* @author Steven.liao<lxq73061@163.com>
* @modify_date 2017-05-11 16:04
* @link http://www.onebound.cn
*
*/
if(1 != count($_GET)){
   echo  "调用格式错误!使用格式 oblog.php?f=file.log".PHP_EOL;
   exit();
}
$dir = dirname(__FILE__).'/runtime/logs/';//定义日志保存的目录
$file_name      = $_GET['f'];//日志文件名
if(strpos($file_name,'..')!==false){//禁止访问上级目录
  echo 'Error!';
  exit();
}
$file_name  = $dir . $file_name;
define("MAX_SHOW", 8192);//每次最多输出多少字节
$file_size      = 0;
$file_size_new  = 0;
$add_size       = 0;
$ignore_size    = 0;
echo str_pad('',4096);
echo str_repeat(' ', 1024*256);
echo '<script>function gb(){ var h = document.documentElement.scrollHeight || document.body.scrollHeight; window.scrollTo(h+200,h+200);};setInterval("gb();",1000)</script>'; 
$fp = fopen($file_name, "r"); 
while($fp && 1){ 
clearstatcache(); 
$file_size_new = filesize($file_name); 
$add_size = $file_size_new - $file_size; 
if($add_size > 0){ 
if($add_size > MAX_SHOW){ 
$ignore_size = $add_size - MAX_SHOW; 
$add_size = MAX_SHOW; 
fseek($fp, $file_size + $ignore_size); 
} 
$new = fread($fp, $add_size); 
if($new){ 
echo nl2br($new); ob_flush();flush(); 
} 
$file_size = $file_size_new; 
} 
usleep(50000); 
} 
fclose($fp);
 ?>

效果可以自己打印

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
16天前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
|
21天前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
3月前
|
应用服务中间件 开发工具 nginx
Ngnix09目录结构分析,使用tree工具可以Ngnix目录中以一个树的方式呈现出来,yum install -y tree,tail -f nginx/logs/access.log
Ngnix09目录结构分析,使用tree工具可以Ngnix目录中以一个树的方式呈现出来,yum install -y tree,tail -f nginx/logs/access.log
|
4月前
|
存储 监控 算法
go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控
go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控
|
4月前
|
监控 PHP 开发者
PHP中的异常处理与错误日志记录
【6月更文挑战第9天】本文深入探讨了PHP编程语言中异常处理的机制和错误日志记录的策略。我们将通过具体实例来展示如何有效地捕获和处理运行时错误,以及如何利用PHP的错误日志功能来监控和维护代码的健康状态。
36 0
|
5月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践深入理解PHP的命名空间与自动加载机制
【5月更文挑战第30天】 在容器化和微服务架构日益普及的背景下,Kubernetes 已成为众多企业的首选容器编排工具。然而,随之而来的挑战是集群的监控与日志管理。本文将深入探讨 Kubernetes 集群监控的最佳实践,包括节点资源使用情况、Pods 健康状态以及网络流量分析等关键指标的监控方法。同时,我们也将讨论日志聚合、存储和查询策略,以确保快速定位问题并优化系统性能。文中将介绍常用的开源工具如 Prometheus 和 Fluentd,并分享如何结合这些工具构建高效、可靠的监控和日志管理系统。
|
5月前
|
PHP
php事务删除加调用日志函数
php事务删除加调用日志函数
25 1
|
5月前
|
存储 监控 关系型数据库
PHP编写的电脑监控软件:用户登录日志记录与分析
使用PHP编写简单但功能强大的电脑监控软件,记录用户登录日志并进行分析。代码示例展示了如何获取并存储用户IP地址和登录时间到数据库,然后进行登录数据的分析,如计算登录频率和常见登录时间。此外,还介绍了如何通过定时任务自动将监控数据提交到网站,以便实时监控用户活动,提升系统安全性和稳定性。
143 0
|
20天前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!