文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

php如何实现linux命令

2023-06-21 23:48

关注

这篇文章主要为大家展示了“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个字节,这样就不会出现大面积的刷新导致看不清的问题。

如何检测文件大小的变化

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

代码实现
#!/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命令”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯