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

php如何实现linux命令

2023-06-21 23:06:54 797人浏览 八月长安
摘要

这篇文章主要为大家展示了“PHP如何实现linux命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何实现linux命令”这篇文章吧。php实现linux命令的方法:1、创建一个PHP示

这篇文章主要为大家展示了“PHP如何实现linux命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何实现linux命令”这篇文章吧。

php实现linux命令的方法:1、创建一个PHP示例文件;2、在第一行输入“#!/usr/bin/env php”;3、通过“if(2 != count($argv)){...}”等代码实现linux命令“tail -f”即可。

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

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 <?phpif(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);

下面是结果

php如何实现linux命令

以上是“php如何实现linux命令”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: php如何实现linux命令

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

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

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

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

下载Word文档
猜你喜欢
  • php如何实现linux命令
    这篇文章主要为大家展示了“php如何实现linux命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何实现linux命令”这篇文章吧。php实现linux命令的方法:1、创建一个PHP示...
    99+
    2023-06-21
  • 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
  • linux中如何实现tree命令
    这篇文章主要为大家展示了“linux中如何实现tree命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中如何实现tree命令”这篇文章吧。tree命令是以图形化的树结构打印文件和目录...
    99+
    2023-06-09
  • python实现Linux命令wget
    #!/bin/python #coding:utf-8 def wget(url,new_name=""): ''' wget封装,需提供下载地址,新文件名参数可省略 ...
    99+
    2023-01-31
    命令 python Linux
  • Linux中如何实现有趣的命令
    这篇文章主要介绍了Linux中如何实现有趣的命令,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、cmatrix在Neo的眼里任何东西都能以计算机字节流的形式展现,你是否也想...
    99+
    2023-06-16
  • 如何实现Linux命令查询小程序
    这篇文章主要介绍了如何实现Linux命令查询小程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Why WePY首先,先分享一下为什么要选择 WePY ?在项目开始进行选型的...
    99+
    2023-06-16
  • Linux中如何实现tail命令的使用
    这篇文章跟大家分析一下“Linux中如何实现tail命令的使用”。内容详细易懂,对“Linux中如何实现tail命令的使用”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux...
    99+
    2023-06-28
  • 如何用Linux命令实现全局搜索
    本篇文章为大家展示了如何用Linux命令实现全局搜索,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Linux中一切皆为文件,这就显得文件管理尤为重要,当文件找不到时可以使用全局搜索命令。 第一种:...
    99+
    2023-06-28
  • linux find命令如何实现模糊查询
    Linux的find命令可以使用通配符来实现模糊查询。通配符是一种特殊字符,可以匹配文件名中的任意字符。例如,要在当前目录及其子目录...
    99+
    2023-08-25
    linux
  • Linux命令如何替换rm命令
    这篇文章主要讲解了“Linux命令如何替换rm命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux命令如何替换rm命令”吧!linux rm 命令误...
    99+
    2022-10-19
  • 通过Golang实现linux命令ls命令(命令行工具构建)
    目录ls 命令os.Args 读取参数pflag小结ls 命令 要实现ls,首先先我们复习一下ls命令。 ls不加任何参数,表示查询当前目录下的文件/文件夹ls后面加上路径,列出所有...
    99+
    2023-01-13
    Golang实现命令行工具 Golang命令行工具 Golang命令行
  • Linux命令如何实现mv重命名文件或目录
    本篇文章为大家展示了Linux命令如何实现mv重命名文件或目录,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹.例子:将目录...
    99+
    2023-06-28
  • Linux命令之lz4命令如何使用
    本篇内容主要讲解“Linux命令之lz4命令如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux命令之lz4命令如何使用”吧!一、lz4命令简介LZ4是一种压缩格式,特点是压缩/解压...
    99+
    2023-07-05
  • Linux系统中如何实现命令行游戏
    这篇文章主要介绍了Linux系统中如何实现命令行游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、网络黑客网络黑客于1987年首次发布,这款游戏还在一直在不停的开发中(3...
    99+
    2023-06-15
  • 如何使用Linux命令实现动画演示
    这篇文章主要介绍如何使用Linux命令实现动画演示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、cmatrix你应该看过好莱坞大片《骇客帝国》,相信你会对电影中那些神奇的场景着迷。在Neo的眼里任何东西都能以计算...
    99+
    2023-06-16
  • linux中sed命令如果实现替换
    本篇内容主要讲解“linux中sed命令如果实现替换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中sed命令如果实现替换”吧!方法:1、设置参数“c”,c的后面可以接字串,这些字串可...
    99+
    2023-06-29
  • Linux tac命令的实现示例
    1.命令简介 tac(cat 的反序)命令以行为单位反序输出文件内容,即第一行最后显示,最后一行先显示。输出内容和 cat 命令相反。 2.命令格式 tac [OPTION]... [FILE]... 如果没有...
    99+
    2022-06-04
    Linux tac命令 Linux tac
  • ubantu如何执行命令实现php安装
    这篇文章主要讲解了“ubantu如何执行命令实现php安装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ubantu如何执行命令实现php安装”吧!ubantu执行命令实现php安装的方法:...
    99+
    2023-06-25
  • linux中Vim如何实现查找与替换命令
    这篇文章主要为大家展示了“linux中Vim如何实现查找与替换命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中Vim如何实现查找与替换命令”这篇文章吧。Vi/Vim 可以说是文本编...
    99+
    2023-06-16
  • Linux系统如何使用命令运行PHP
    小编给大家分享一下Linux系统如何使用命令运行PHP,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在命令行上执行php所需的设置首先在Linux系统中安装PHP,如果没有安装的小伙伴可以参考Linux系统安装php教程,...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作