如何使用定制的PHP應(yīng)用程序來獲取Web服務(wù)器狀態(tài)信息

這篇文章主要為大家展示了“如何使用定制的PHP應(yīng)用程序來獲取Web服務(wù)器狀態(tài)信息”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用定制的PHP應(yīng)用程序來獲取Web服務(wù)器狀態(tài)信息”這篇文章吧。

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:垃圾桶網(wǎng)站設(shè)計(jì)、成都全網(wǎng)營銷解決方案、網(wǎng)站設(shè)計(jì)等建站排名服務(wù)。


公共日志文件格式(CommonLogfileFormat,CLF)的結(jié)構(gòu)

CLF最初是NCSA為HTTPd(全球網(wǎng)服務(wù)器軟件)而設(shè)計(jì)的。CERNHTTPd是一個由萬維網(wǎng)聯(lián)盟(WorldWideWebConsortium,W3C)維護(hù)的公共域Web服務(wù)器。W3C網(wǎng)站列出了該日志文件規(guī)范?;谖④浐蚒NIX的Web服務(wù)器都可以生成CLF格式的日志文件。CLF格式如下:

HostIdentAuthuserTime_Stamp"request"Status_codeFile_size

例如:

21.53.48.83--[22/Apr/2002:22:19:12-0500]"GET/cnet.gifHTTP/1.0"2008237

下面是日志條目的細(xì)目分類:

Host是網(wǎng)站訪問者的IP地址或者DNS名;在上面的例子中,它是21.53.48.83。

Ident是該訪客的遠(yuǎn)端身份(RFC931)。破折號表明“未指定”。

Authuser是用戶ID(如果Web服務(wù)器已經(jīng)驗(yàn)證了驗(yàn)證網(wǎng)站訪問者的身份的話)。

Time_Stam是服務(wù)器以“日/月/年”這種格式返回的時(shí)間。

Request是網(wǎng)站訪問者的HTTP請求,例如GET或者POST。

Status_Code是服務(wù)器所返回的狀態(tài)代碼,例如:200代表“正確——瀏覽器請求成功”。

File_Size是用戶所請求文件的大小。在本例中,它為8237字節(jié)。

服務(wù)器狀態(tài)代碼

你可以在HTTP標(biāo)準(zhǔn)中找到W3C所開發(fā)的服務(wù)器狀態(tài)代碼規(guī)范。這些由服務(wù)器所產(chǎn)生的狀態(tài)代碼表示了瀏覽器和服務(wù)器之間的數(shù)據(jù)傳輸成功與否。這些代碼一般傳遞給瀏覽器(例如非常有名的404錯誤“頁面沒有找到“)或者添加到服務(wù)器日志中去。

收集數(shù)據(jù)

創(chuàng)建我們的自定義應(yīng)用程序的第一步就是獲取用戶數(shù)據(jù)。每當(dāng)用戶選擇網(wǎng)站的某個資源時(shí),我們就希望創(chuàng)建一個對應(yīng)的日志條目。幸好,服務(wù)器變量的存在使得我們能夠查詢用戶瀏覽器并獲取數(shù)據(jù)。

報(bào)頭中的服務(wù)器變量攜帶了從瀏覽器傳遞到服務(wù)器的信息。REMOTE_ADDR就是一個服務(wù)器變量的例子。這個變量返回了用戶的IP地址:

例子輸出:27.234.125.222

下面的PHP代碼將顯示出當(dāng)前用戶的IP地址:

讓我們看看我們的PHP應(yīng)用程序的代碼。首先,我們需要定義我們想跟蹤的網(wǎng)站資源并指定文件大?。?/p>

//獲取我們想記錄的文件名稱

$fileName="cnet-banner.gif";

$fileSize="92292";

你無需把這些值保存到靜態(tài)變量中去。如果你要跟蹤許多條目,那么你可以把它們保存到數(shù)組或者數(shù)據(jù)庫中去。在這種情況下,你可能會希望通過一個外部鏈接來找到每個條目,如下所示:

其中“123”表示“cnet-banner.gif”所對應(yīng)的記錄。然后,我們通過服務(wù)器變量來查詢用戶瀏覽器。這樣我們就得到在我們的日志文件中添加新條目所需的數(shù)據(jù):

怎樣用定制的PHP應(yīng)用程序來獲取Web服務(wù)器的狀態(tài)信息

//得到網(wǎng)站瀏覽者的CLF信息

$host=$_SERVER['REMOTE_ADDR'];

$ident=$_SERVER['REMOTE_IDENT'];

$auth=$_SERVER['REMOTE_USER'];

$timeStamp=date("d/M/Y:H:i:sO");

$reqType=$_SERVER['REQUEST_METHOD'];

$servProtocol=$_SERVER['SERVER_PROTOCOL'];

$statusCode="200";

然后,我們檢查服務(wù)器是否返回了空值(null)。根據(jù)CLF規(guī)范,空值應(yīng)該用破折號來代替。這樣,下一個代碼塊的任務(wù)就是尋找空值并用破折號來取代它:

//給空值添加破折號(根據(jù)規(guī)范)

if($host==""){$host="-";}

if($ident==""){$ident="-";}

if($auth==""){$auth="-";}

if($reqType==""){$reqType="-";}

if($servProtocol==""){$servProtocol="-";}

一旦我們獲取了必要的信息,這些值將被組織成一種符合CLF規(guī)范的格式:

//創(chuàng)建CLF格式的字符串

$clfString=$host."".$ident."".$auth."[".$timeStamp."]\"".$reqType."/".$fileName."".$servProtocol."\"".$statusCode."".$fileSize."\r\n";

創(chuàng)建自定義日志文件

現(xiàn)在,格式化之后的數(shù)據(jù)可以存放到我們的自定義日志文件中去。首先,我們將創(chuàng)建一種文件命名協(xié)定,并編寫每日產(chǎn)生一個新日志文件的方法(函數(shù))。在本文所舉的例子中,每個文件都以“weblog-”開頭,然后是按月/日/年表示的日期,文件擴(kuò)展名為.log。.log擴(kuò)展名一般表示服務(wù)器日志文件。(實(shí)際上,絕大多數(shù)日志分析器都搜索.log文件。)

//用當(dāng)前日期來命名日志文件

$logPath="./log/";

$logFile=$logPath."weblog-".date("mdy").".log";

現(xiàn)在,我們需要判斷當(dāng)前日志文件是否存在。如果存在,我們就向它添加條目;否則,應(yīng)用程序就創(chuàng)建新的日志文件。(新日志文件的創(chuàng)建一般發(fā)生在日期更改時(shí),因?yàn)檫@時(shí)文件名發(fā)生變化了。)

//檢查日志文件是否已經(jīng)存在

if(file_exists($logFile)){

//如果存在,則打開已存在的日志文件

$fileWrite=fopen($logFile,"a");}

else{

//否則,創(chuàng)建新的日志文件

$fileWrite=fopen($logFile,"w");}

如果你在寫或者追加文件時(shí),收到“權(quán)限不足(PermissionDenied)”錯誤信息,請更改目標(biāo)日志文件夾的權(quán)限來允許寫操作。絕大多數(shù)Web服務(wù)器的默認(rèn)權(quán)限為“可讀可執(zhí)行”。你可以用CHMOD命令或者使用FTP客戶端來改變文件夾的權(quán)限。

然后,我們創(chuàng)建文件鎖定機(jī)制,這樣當(dāng)兩個或者更多用戶同時(shí)訪問日志文件時(shí),只有其中的一個用戶可以對該文件進(jìn)行寫操作:

//創(chuàng)建文件寫操作的鎖定機(jī)制

flock($fileWrite,LOCK_SH);

最后,我們寫入條目的內(nèi)容:

//寫CLF條目

fwrite($fileWrite,$clfString);

//解除文件鎖定狀態(tài)

flock($fileWrite,LOCK_UN);

//關(guān)閉日志文件

fclose($fileWrite);

處理日志數(shù)據(jù)

在該系統(tǒng)產(chǎn)品化之后,客戶希望得到對所收集到的訪問者數(shù)據(jù)的詳細(xì)統(tǒng)計(jì)分析。由于所有的定制日志文件都是按照一個標(biāo)準(zhǔn)的格式組織的,因此任何一個日志分析器都可以處理它們。日志分析器是一個工具,它分析大的日志文件并產(chǎn)生餅圖、直方圖以及其它統(tǒng)計(jì)圖形。日志分析器也用來收集數(shù)據(jù),并綜合出提供哪些用戶訪問你的網(wǎng)站、點(diǎn)擊數(shù)等方面的信息。

下面列出了幾個比較流行的日志分析器:

WebTrends是一個非常不錯的日志分析器,它適用于大規(guī)模網(wǎng)站以及企業(yè)級的網(wǎng)絡(luò)。

Analog是一個頗受歡迎的免費(fèi)日志分析器。

Webalizer是一個免費(fèi)的分析程序。它可以產(chǎn)生HTML報(bào)告,這樣大多數(shù)網(wǎng)絡(luò)瀏覽器都可以查看它的報(bào)告。

遵守標(biāo)準(zhǔn)

我們可以輕松的擴(kuò)展該應(yīng)用程序來讓它支持其它類型的日志記錄。這樣你就可以捕獲到更多的數(shù)據(jù),如瀏覽器類型以及referrer(referrer指得是鏈接到當(dāng)前網(wǎng)頁的前一個網(wǎng)頁)。這里的經(jīng)驗(yàn)就是:在你編程的時(shí)候遵循標(biāo)準(zhǔn)或者慣例終究會簡化工作。

以上是“如何使用定制的PHP應(yīng)用程序來獲取Web服務(wù)器狀態(tài)信息”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

名稱欄目:如何使用定制的PHP應(yīng)用程序來獲取Web服務(wù)器狀態(tài)信息
網(wǎng)站URL:http://muchs.cn/article26/pdjgjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)用戶體驗(yàn)、建站公司

廣告

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

成都網(wǎng)站建設(shè)