广告
返回顶部
首页 > 资讯 > 操作系统 >php怎么实现linux命令
  • 880
分享到

php怎么实现linux命令

phplinux 2021-08-18 23:08:52 880人浏览 猪猪侠
摘要

本文操作环境:linux5.9.8系统,PHP7.1版,Dell G3电脑。php怎么实现linux命令?php实现linux命令tail -f今天突然想到之前有人问过我的一个问题,如何通过PHP实现linux中的命令tail -f,这里就

本文操作环境:linux5.9.8系统,PHP7.1版,Dell G3电脑。

php怎么实现linux命令?

php实现linux命令tail -f

今天突然想到之前有人问过我的一个问题,如何通过PHP实现linux中的命令tail -f,这里就来分析实现下。

这个想一想也挺简单,通过一个循环检测文件,看文件的大小是否有变化,如果有变化,输出文件变化的部分,当然了这里面会有好多的细节,这里具体分析下。

如果初始文件太大或者改变内容太多

这个时候一下输出好多内容可能看不清,因此我这里设置了一个阈值8192,当内容长度超过这个阈值的时候,只输出最后面的8192个字节,这样就不会出现大面积的刷新导致看不清的问题。

如何检测文件大小的变化

这个问题是这个程序的核心,能不能成功,性能的好坏就靠这部分了。
我在这里的实现是下面这样:

  • 打开文件句柄$fp,这里要注意,这里的文件句柄全程需中只打开一次关闭一次,因此要将他放在循环的外面。
  • 初始化当前文件大小file_sizefile_size_new都为0。
    • 循环里面更新file_size_new文件大小,这里要注意,php中获取文件大小之前一定要运行函数clearstatcache(),清除文件状态缓存,否则获取文件大小可能会有偏差。
    • 计算add_size = file_size_new - file_size,看文件大小是否有变化,如果有变化,将文件指针移动到指定位置,然后输出新加的内容,更新file_size值为new_file_size
    • usleep(50000),睡眠1/20秒。

代码实现

#!/usr/bin/env php 
<?php
if(2 != count($argv)){
    fwrite(
        STDERR,
        "调用格式错误!使用格式 ./tail filename".PHP_EOL
    );  
    return 1;
}

$file_name      = $argv[1];
define("MAX_SHOW", 8192);

$file_size      = 0;
$file_size_new  = 0;
$add_size       = 0;
$ignore_size    = 0;
$fp = fopen($file_name, "r");
while(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);
        }   
        fwrite(
            STDOUT,
            fread($fp, $add_size)
        );  
        $file_size  = $file_size_new;
    }
    usleep(50000);
}

fclose($fp);

代码实现这里第一行的#!/usr/bin/env php 是告诉可执行文件,可执行文件php在系统PATH中查找,这样的好处就是移植性好。

2016-02-22 11:28:51改进

查了PHP官方手册,fseek函数这里可以改进改进,这个函数还接受第三个参数,表示偏移指针的类型,默认是SEEK_SET,从开始偏移,还可以设置为SEEK_CUR,表示从当前位置偏移,因此这里改为fseek($fp, $ignore_size, $ignore_size);

下面是结果

--结束END--

本文标题: php怎么实现linux命令

本文链接: https://www.lsjlt.com/news/824.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php怎么实现linux命令
    本文操作环境:linux5.9.8系统,PHP7.1版,Dell G3电脑。php怎么实现linux命令PHP实现linux命令tail -f今天突然想到之前有人问过我的一个问题,如何通过PHP实现linux中的命令tail -f,这里就来...
    99+
    2021-08-18
    php linux
  • php如何实现linux命令
    这篇文章主要为大家展示了“php如何实现linux命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何实现linux命令”这篇文章吧。php实现linux命令的方法:1、创建一个PHP示...
    99+
    2023-06-21
  • Linux怎么实现自动补全命令
    这篇文章主要介绍“Linux怎么实现自动补全命令”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux怎么实现自动补全命令”文章能帮助大家解决问题。linux命令自动补全centos7下执行yum...
    99+
    2023-06-28
  • 怎么在PHP中运行Linux命令
    这篇文章的内容主要围绕怎么在PHP中运行Linux命令进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在开发过程中有时会需要在PHP函数中运行Linu...
    99+
    2023-06-28
  • python实现Linux命令wget
    #!/bin/python #coding:utf-8 def wget(url,new_name=""): ''' wget封装,需提供下载地址,新文件名参数可省略 ...
    99+
    2023-01-31
    命令 python Linux
  • Linux supervisord命令怎么
    今天小编给大家分享一下Linux supervisord命令怎么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Linux常用...
    99+
    2023-06-28
  • Linux常用命令groupdel命令怎么用
    这篇文章主要介绍Linux常用命令groupdel命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux常用命令groupdel命令用于删除群组需要从系统上删除群组时,可用groupdel(group d...
    99+
    2023-06-28
  • Linux复制命令cp命令怎么用
    小编给大家分享一下Linux复制命令cp命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux系统cp命令主要用于复制文件,可以复制指定目录下的全部文...
    99+
    2023-06-28
  • Linux命令中的rpm命令怎么用
    这篇文章的内容主要围绕Linux命令中的rpm命令怎么用进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在Linux中,RPM是进行软件得安装、卸载、...
    99+
    2023-06-28
  • Linux常用命令bzless命令怎么用
    这篇文章主要介绍Linux常用命令bzless命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux常用命令bzless命令是增强 .bz2 压缩包查看器,bzless比bzmore命令功能更加强大语法&...
    99+
    2023-06-28
  • Linux的blkid命令命令怎么使用
    这篇文章主要介绍“Linux的blkid命令命令怎么使用”,在日常操作中,相信很多人在Linux的blkid命令命令怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux的blkid命令命令怎么使用...
    99+
    2023-06-28
  • 怎么用Shell+Linux命令实现日志分析
    本篇内容主要讲解“怎么用Shell+Linux命令实现日志分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Shell+Linux命令实现日志分析”吧!一、列出当天访问次数最多的IP命令:...
    99+
    2023-06-09
  • linux 无法识别php命令怎么办
    本文操作环境:linux5.9.8系统、PHP5.4.26版、DELL G3电脑linux 无法识别php命令怎么办linux下php命令无法使用如何解决,测试是否添加php环境变量方法:如下:输入php -v 显示 php 命令没有找到 ...
    99+
    2014-05-27
    linux php
  • ubantu怎么执行命令实现php安装
    本文操作环境:ubuntu 16.04系统、PHP5版、DELL G3电脑在ubuntu中安装php: 关于Ubuntu下的LAMP配置步骤:首先要安装LAMP 就是Apache,PHP5,Mysql5.打开终端,输入命令行。安装 Apac...
    99+
    2019-04-03
    ubantu php
  • 通过Golang实现linux命令ls命令(命令行工具构建)
    目录ls 命令os.Args 读取参数pflag小结ls 命令 要实现ls,首先先我们复习一下ls命令。 ls不加任何参数,表示查询当前目录下的文件/文件夹ls后面加上路径,列出所有...
    99+
    2023-01-13
    Golang实现命令行工具 Golang命令行工具 Golang命令行
  • linux关机命令shutdown怎么实现立刻关机
    本篇内容介绍了“linux关机命令shutdown怎么实现立刻关机”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2023-02-02
    linux shutdown
  • Linux命令chmod怎么用
    这篇文章给大家分享的是有关Linux命令chmod怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。##chmod命令用途 用于改变Linux系统的文件的访问权限。通常用它来控制文件的访问权限,使文件可写或者使...
    99+
    2023-06-16
  • Linux GCC命令怎么用
    本篇内容主要讲解“Linux GCC命令怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux GCC命令怎么用”吧!1. 简介GCC 的意思也只是 GNU C Compiler 而已。...
    99+
    2023-06-27
  • Linux nohub命令怎么用
    这篇文章主要介绍“Linux nohub命令怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux nohub命令怎么用”文章能帮助大家解决问题。nohup命令基本语法nohup 命令的基本...
    99+
    2023-06-27
  • Linux watch命令怎么用
    本篇内容主要讲解“Linux watch命令怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux watch命令怎么用”吧!Linux常用命令watch命令 以周期性的方式执行给定的指...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作