日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

php怎么实现linux命令

發布時間:2023/12/31 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 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命令?

PHP實現linux命令tail -f

今天突然想到之前有人問過我的一個問題,如何通過PHP實現linux中的命令tail -f,這里就來分析實現下。

這個想一想也挺簡單,通過一個循環檢測文件,看文件的大小是否有變化,如果有變化,輸出文件變化的部分,當然了這里面會有好多的細節,這里具體分析下。

如果初始文件太大或者改變內容太多

這個時候一下輸出好多內容可能看不清,因此我這里設置了一個閾值8192,當內容長度超過這個閾值的時候,只輸出最后面的8192個字節,這樣就不會出現大面積的刷新導致看不清的問題。

如何檢測文件大小的變化

這個問題是這個程序的核心,能不能成功,性能的好壞就靠這部分了。
我在這里的實現是下面這樣:

打開文件句柄$fp,這里要注意,這里的文件句柄全程需中只打開一次關閉一次,因此要將他放在循環的外面。初始化當前文件大小file_size和file_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視頻教程》

總結

以上是生活随笔為你收集整理的php怎么实现linux命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。