php怎么實現(xiàn)linux命令

php實現(xiàn)linux命令的方法:1、創(chuàng)建一個PHP示例文件;2、在第一行輸入“#!/usr/bin/env php”;3、通過“if(2 != count($argv)){...}”等代碼實現(xiàn)linux命令“tail -f”即可。

竹溪網站建設公司創(chuàng)新互聯(lián)建站,竹溪網站設計制作,有大型網站制作公司豐富經驗。已為竹溪成百上千提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿營銷網站建設要多少錢,請找那個售后服務好的竹溪做網站的公司定做!

本文操作環(huán)境:linux5.9.8系統(tǒng),PHP7.1版,Dell G3電腦。

php怎么實現(xiàn)linux命令?

PHP實現(xiàn)linux命令tail -f

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

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

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

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

如何檢測文件大小的變化

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

打開文件句柄$fp,這里要注意,這里的文件句柄全程需中只打開一次關閉一次,因此要將他放在循環(huán)的外面。初始化當前文件大小file_size和file_size_new都為0。循環(huán)里面更新file_size_new文件大小,這里要注意,php中獲取文件大小之前一定要運行函數(shù)clearstatcache(),清除文件狀態(tài)緩存,否則獲取文件大小可能會有偏差。計算add_size = file_size_new - file_size,看文件大小是否有變化,如果有變化,將文件指針移動到指定位置,然后輸出新加的內容,更新file_size值為new_file_size。usleep(50000),睡眠1/20秒。代碼實現(xiàn)#!/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);

代碼實現(xiàn)這里第一行的#!/usr/bin/env php是告訴可執(zhí)行文件,可執(zhí)行文件php在系統(tǒng)PATH中查找,這樣的好處就是移植性好。

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

查了PHP官方手冊,fseek函數(shù)這里可以改進改進,這個函數(shù)還接受第三個參數(shù),表示偏移指針的類型,默認是SEEK_SET,從開始偏移,還可以設置為SEEK_CUR,表示從當前位置偏移,因此這里改為fseek($fp, $ignore_size, $ignore_size);

下面是結果

推薦學習:《PHP視頻教程》

網頁標題:php怎么實現(xiàn)linux命令
轉載來源:http://m.kartarina.com/article46/cpcdeg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站制作微信小程序域名注冊虛擬主機營銷型網站建設品牌網站制作

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
主站蜘蛛池模板: 日韩精品无码免费专区午夜| 久久精品无码专区免费青青| 无套中出丰满人妻无码| 无码国产成人午夜电影在线观看| 亚洲精品无码成人片久久| 亚洲精品无码成人片久久不卡 | 无码精品国产dvd在线观看9久| 人妻少妇乱子伦无码专区| 久久久久久精品无码人妻| 中文字幕无码久久人妻| 精品无码一区二区三区电影| 国产啪亚洲国产精品无码| 精品无码人妻一区二区三区不卡| 高清无码v视频日本www| 国产成人无码精品久久久免费| 午夜福利av无码一区二区| 东京热人妻无码人av| 国产高清不卡无码视频| 日韩精品无码永久免费网站 | 无码毛片一区二区三区中文字幕| 精品人无码一区二区三区| 国产乱子伦精品无码码专区| 国产AV无码专区亚洲AV琪琪| 国产AV无码专区亚洲AV蜜芽| 成人无码嫩草影院| 久久久久久无码Av成人影院 | 亚洲人成无码网站在线观看| 曰批全过程免费视频在线观看无码 | 精品无码国产自产拍在线观看| 狠狠躁天天躁中文字幕无码| 精品韩国亚洲av无码不卡区| 亚洲最大无码中文字幕| 精品人妻无码区二区三区| 久久亚洲AV无码精品色午夜| 久久久久久久亚洲Av无码| 精品无码人妻一区二区三区品 | 亚洲av永久无码精品三区在线4| 成在人线av无码免费高潮喷水| 国产精品无码不卡一区二区三区| 无码国内精品久久人妻麻豆按摩 | a级毛片无码免费真人|