php實(shí)現(xiàn)linux命令的方法:1、創(chuàng)建一個PHP示例文件;2、在第一行輸入“#!/usr/bin/env php”;3、通過“if(2 != count($argv)){...}”等代碼實(shí)現(xiàn)linux命令“tail -f”即可。
竹溪網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,竹溪網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為竹溪成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的竹溪做網(wǎng)站的公司定做!
本文操作環(huán)境:linux5.9.8系統(tǒng),PHP7.1版,Dell G3電腦。
php怎么實(shí)現(xiàn)linux命令?
PHP實(shí)現(xiàn)linux命令tail -f
今天突然想到之前有人問過我的一個問題,如何通過PHP實(shí)現(xiàn)linux中的命令tail -f,這里就來分析實(shí)現(xiàn)下。
這個想一想也挺簡單,通過一個循環(huán)檢測文件,看文件的大小是否有變化,如果有變化,輸出文件變化的部分,當(dāng)然了這里面會有好多的細(xì)節(jié),這里具體分析下。
如果初始文件太大或者改變內(nèi)容太多這個時候一下輸出好多內(nèi)容可能看不清,因此我這里設(shè)置了一個閾值8192,當(dāng)內(nèi)容長度超過這個閾值的時候,只輸出最后面的8192個字節(jié),這樣就不會出現(xiàn)大面積的刷新導(dǎo)致看不清的問題。
如何檢測文件大小的變化這個問題是這個程序的核心,能不能成功,性能的好壞就靠這部分了。
我在這里的實(shí)現(xiàn)是下面這樣:
代碼實(shí)現(xiàn)這里第一行的#!/usr/bin/env php是告訴可執(zhí)行文件,可執(zhí)行文件php在系統(tǒng)PATH中查找,這樣的好處就是移植性好。
2016-02-22 11:28:51改進(jìn)
查了PHP官方手冊,fseek函數(shù)這里可以改進(jìn)改進(jìn),這個函數(shù)還接受第三個參數(shù),表示偏移指針的類型,默認(rèn)是SEEK_SET,從開始偏移,還可以設(shè)置為SEEK_CUR,表示從當(dāng)前位置偏移,因此這里改為fseek($fp, $ignore_size, $ignore_size);
下面是結(jié)果推薦學(xué)習(xí):《PHP視頻教程》