PHP实现linux命令tail -f的方法

PHP实现tail -f功能,可以使用流(stream)来实时获取文件更新内容。基本思路是:

1. 打开文件并定位到文件末尾

2. 进入循环,不断读取文件末尾数据

3. 判断文件更新,输出新读取的数据

4. 睡眠一秒后继续循环PHP代码实现如下:

$filename = '/path/to/file';

// 打开文件并定位到文件末尾
$file = fopen($filename, 'rb');
fseek($file, 0, SEEK_END);

// 文件上次读取位置
$lastPos = ftell($file);  

while(true) {
    // 读取文件更新内容
    fseek($file, $lastPos);
    $content = fread($file, 1024);  
    
    // 判断有更新则输出
    if(!empty($content)) { 
        echo $content;
        $lastPos = ftell($file); 
    }  
    
    // 睡1秒
    sleep(1); 
}

fclose($file);

程序会持续监听该文件,有更新内容则输出,实现类似tail -f的功能。

运行此PHP脚本,会进入死循环不断检测文件更新并输出,可以通过Ctrl+C终止进程。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论