検索
ホームページバックエンド開発PHPチュートリアルカスタム PHP アプリケーションを使用して Web サーバーからステータス情報を取得する_PHP チュートリアル
カスタム PHP アプリケーションを使用して Web サーバーからステータス情報を取得する_PHP チュートリアルJul 21, 2016 pm 04:07 PM
phpweb情報会社カスタムメイドアプリホスティングサーバ使用Webサイト得る

大多数网站托管(Web hosting)公司都支持客户对Web站点统计数据的访问,但是你往往会觉得服务器所产生的状态信息不够全面。例如,配置不正确的Web服务器不能识别某些文件类型,这些类型的文件就不会出现在状态信息之中。幸好,你可以用PHP来定制状态信息收集程序,这样你就可以获取你所需要的信息了。


公共日志文件格式(Common Logfile Format,CLF)的结构

 
CLF最初是NCSA为HTTPd(全球网服务器软件)而设计的。CERN HTTPd是一个由万维网联盟(World Wide Web Consortium,W3C)维护的公共域Web服务器。W3C网站列出了该日志文件规范。基于微软和UNIX的Web服务器都可以生成CLF格式的日志文件。CLF格式如下:
Host IdentAuthuserTime_Stamp "request" Status_codeFile_size

例如:
21.53.48.83 - - [22/Apr/2002:22:19:12 -0500] "GET /cnet.gif HTTP/1.0" 200 8237

下面是日志条目的细目分类:

Host是网站访问者的IP地址或者DNS名;在上面的例子中,它是21.53.48.83。
Ident是该访客的远端身份(RFC 931)。破折号表明“未指定”。
Authuser是用户ID(如果Web服务器已经验证了验证网站访问者的身份的话)。
Time_Stam是服务器以“日/月/年”这种格式返回的时间。
Request是网站访问者的HTTP请求,例如GET或者POST。
Status_Code是服务器所返回的状态代码,例如:200代表“正确——浏览器请求成功”。
File_Size是用户所请求文件的大小。在本例中,它为 8237字节。


服务器状态代码

 
你可以在HTTP标准中找到W3C所开发的服务器状态代码规范。这些由服务器所产生的状态代码表示了浏览器和服务器之间的数据传输成功与否。这些代码一般传递给浏览器(例如非常有名的404错误“页面没有找到“)或者添加到服务器日志中去。


收集数据

创建我们的自定义应用程序的第一步就是获取用户数据。每当用户选择网站的某个资源时,我们就希望创建一个对应的日志条目。幸好,服务器变量的存在使得我们能够查询用户浏览器并获取数据。

报头中的服务器变量携带了从浏览器传递到服务器的信息。REMOTE_ADDR就是一个服务器变量的例子。这个变量返回了用户的IP地址:
例子输出:27.234.125.222

下面的PHP代码将显示出当前用户的IP地址:

让我们看看我们的PHP应用程序的代码。首先,我们需要定义我们想跟踪的网站资源并指定文件大小:
//获取我们想记录的文件名称
$fileName="cnet-banner.gif";
$fileSize="92292";

你无需把这些值保存到静态变量中去。如果你要跟踪许多条目,那么你可以把它们保存到数组或者数据库中去。在这种情况下,你可能会希望通过一个外部链接来找到每个条目,如下所示:
カスタム PHP アプリケーションを使用して Web サーバーからステータス情報を取得する_PHP チュートリアル

其中“123”表示“cnet-banner.gif”所对应的记录。然后,我们通过服务器变量来查询用户浏览器。这样我们就得到在我们的日志文件中添加新条目所需的数据:
//得到网站浏览者的CLF信息
$host=$_SERVER['REMOTE_ADDR'];
$ident=$_SERVER['REMOTE_IDENT'];
$auth=$_SERVER['REMOTE_USER'];
$timeStamp=date("d/M/Y:H:i:s O");
$reqType=$_SERVER['REQUEST_METHOD'];
$servProtocol=$_SERVER['SERVER_PROTOCOL'];
$statusCode="200";

然后,我们检查服务器是否返回了空值(null)。根据CLF规范,空值应该用破折号来代替。这样,下一个代码块的任务就是寻找空值并用破折号来取代它:
//给空值添加破折号(根据规范)
if ($host==""){ $host="-"; }
if ($ident==""){ $ident="-"; }
if ($auth==""){ $auth="-"; }
if ($reqType==""){ $reqType="-"; }
if ($servProtocol==""){ $servProtocol="-"; }

一旦我们获取了必要的信息,这些值将被组织成一种符合CLF规范的格式:
//创建CLF格式的字符串
$clfString=$host." ".$ident." ".$auth." [".$timeStamp."] \"".$reqType." /".$fileName." ".$servProtocol."\" ".$statusCode." ".$fileSize."\r\n";

カスタム ログ ファイルを作成する

これで、フォーマットされたデータをカスタム ログ ファイルに保存できます。まず、ファイルの命名規則を作成し、毎日新しいログ ファイルを生成するメソッド (関数) を作成します。この記事の例では、各ファイルは「weblog-」で始まり、その後に月/日/年の日付が続き、ファイル拡張子は .log です。 .log 拡張子は通常、サーバー ログ ファイルを示します。 (実際、ほとんどのログ アナライザーは .log ファイルを検索します。)
// 現在の日付を使用してログ ファイルに名前を付けます
$logPath="./log/";
$logFile=$logPath."weblog-". mdy").".log";

次に、現在のログ ファイルが存在するかどうかを確認する必要があります。存在する場合は、エントリを追加します。存在しない場合は、アプリケーションが新しいログ ファイルを作成します。 (この時点でファイル名が変更されるため、通常、新しいログ ファイルの作成は日付が変わるときに行われます。)
//ログ ファイルが既に存在するかどうかを確認します
if (file_exists($logFile)){
// 存在する場合、それを開きます 既存のログファイル
$fileWrite = fopen($logFile,"a");}
else {
//それ以外の場合は、新しいログファイルを作成します
$fileWrite = fopen($logFile,"w"); }

ファイルへの書き込みまたは追加時に「アクセス許可が拒否されました」エラー メッセージが表示された場合は、対象のログ フォルダーのアクセス許可を書き込みを許可するように変更します。ほとんどの Web サーバーのデフォルトの権限は「読み取り可能および実行可能」です。フォルダーのアクセス許可は、CHMOD コマンドまたは FTP クライアントを使用して変更できます。

次に、2 人以上のユーザーが同時にログ ファイルにアクセスしたときに、そのうちの 1 人だけがファイルに書き込めるようにファイル ロック メカニズムを作成します。
//ファイル書き込み操作用のロック メカニズムを作成する
flock( $fileWrite, LOCK_SH);

最後に、エントリの内容を書き込みます:
//CLF エントリを書き込みます
fwrite($fileWrite,$clfString);
//ファイルのロック状態を解除します
flock($fileWrite, LOCK_UN) );
//ログ ファイルを閉じる
fclose($fileWrite);

ログ データを処理する


システムが商用化された後、顧客は収集された訪問者データの詳細な統計分析を希望します。すべてのカスタム ログ ファイルは標準形式で編成されているため、どのログ アナライザーでも処理できます。 Log Analyzer は、大規模なログ ファイルを分析し、円グラフ、ヒストグラム、その他の統計グラフィックを作成するツールです。ログ アナライザーは、データを収集し、どのユーザーが Web サイトにアクセスしたか、クリック数などに関する情報を統合するためにも使用されます。

いくつかの人気のあるログ アナライザーを以下に示します:

WebTrends は非常に優れたログ アナライザーであり、大規模な Web サイトやエンタープライズ レベルのネットワークに適しています。
Analog は、人気のある無料のログ アナライザーです。
Webalizer は無料の分析プログラムです。ほとんどの Web ブラウザでレポートを表示できるように、HTML レポートを生成できます。

標準準拠

他のタイプのロギングをサポートするようにアプリケーションを簡単に拡張できます。この方法により、ブラウザの種類や参照元 (参照元とは、現在の Web ページにリンクされていた前の Web ページを指します) など、より多くのデータを取得できます。ここでの教訓は、プログラミングするときに標準や慣例に従うことで、最終的に仕事が楽になるということです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314955.html技術記事ほとんどの Web ホスティング会社は、Web サイト統計への顧客アクセスを提供していますが、サーバーによって生成されたステータス情報が十分に包括的ではないと感じることがよくあります。たとえば、次のように設定します...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
如何在技嘉主板上设置键盘启动功能 (技嘉主板启用键盘开机方式)如何在技嘉主板上设置键盘启动功能 (技嘉主板启用键盘开机方式)Dec 31, 2023 pm 05:15 PM

技嘉的主板怎么设置键盘开机首先,要支持键盘开机,一定是PS2键盘!!设置步骤如下:第一步:开机按Del或者F2进入bios,到bios的Advanced(高级)模式普通主板默认进入主板的EZ(简易)模式,需要按F7切换到高级模式,ROG系列主板默认进入bios的高级模式(我们用简体中文来示范)第二步:选择到——【高级】——【高级电源管理(APM)】第三步:找到选项【由PS2键盘唤醒】第四步:这个选项默认是Disabled(关闭)的,下拉之后可以看到三种不同的设置选择,分别是按【空格键】开机、按组

CS玩家的首选:推荐的电脑配置CS玩家的首选:推荐的电脑配置Jan 02, 2024 pm 04:26 PM

1.处理器在选择电脑配置时,处理器是至关重要的组件之一。对于玩CS这样的游戏来说,处理器的性能直接影响游戏的流畅度和反应速度。推荐选择IntelCorei5或i7系列的处理器,因为它们具有强大的多核处理能力和高频率,可以轻松应对CS的高要求。2.显卡显卡是游戏性能的重要因素之一。对于射击游戏如CS而言,显卡的性能直接影响游戏画面的清晰度和流畅度。建议选择NVIDIAGeForceGTX系列或AMDRadeonRX系列的显卡,它们具备出色的图形处理能力和高帧率输出,能够提供更好的游戏体验3.内存电

主板上的数字音频输出接口-SPDIF OUT主板上的数字音频输出接口-SPDIF OUTJan 14, 2024 pm 04:42 PM

主板上SPDIFOUT连接线序最近我遇到了一个问题,就是关于电线的接线顺序。我上网查了一下,有些资料说1、2、4对应的是out、+5V、接地;而另一些资料则说1、2、4对应的是out、接地、+5V。最好的办法是查看你的主板说明书,如果找不到说明书,你可以使用万用表进行测量。首先找到接地,然后就可以确定其他的接线顺序了。主板vdg怎么接线连接主板的VDG接线时,您需要将VGA连接线的一端插入显示器的VGA接口,另一端插入电脑的显卡VGA接口。请注意,不要将其插入主板的VGA接口。完成连接后,您可以

广联达软件电脑配置推荐;广联达软件对电脑的配置要求广联达软件电脑配置推荐;广联达软件对电脑的配置要求Jan 01, 2024 pm 12:52 PM

广联达软件是一家专注于建筑信息化领域的软件公司,其产品被广泛应用于建筑设计、施工、运营等各个环节。由于广联达软件功能复杂、数据量大,对电脑的配置要求较高。本文将从多个方面详细阐述广联达软件的电脑配置推荐,以帮助读者选择适合的电脑配置处理器广联达软件在进行建筑设计、模拟等操作时,需要进行大量的数据计算和处理,因此对处理器的要求较高。推荐选择多核心、高主频的处理器,如英特尔i7系列或AMDRyzen系列。这些处理器具有较强的计算能力和多线程处理能力,能够更好地满足广联达软件的需求。内存内存是影响计算

php怎么设置implode没有分隔符php怎么设置implode没有分隔符Apr 18, 2022 pm 05:39 PM

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

我准备去西藏旅行背包去①背多少升的包合适把你认为最好的配置说下本人170体力不错第一次我准备去西藏旅行背包去①背多少升的包合适把你认为最好的配置说下本人170体力不错第一次Jan 07, 2024 am 10:06 AM

我准备去西藏旅行背包去①背多少升的包合适把你认为最好的配置说下本人170体力不错第一次去徒步多就60升或以上的徒步少就60升以下的全程都坐车就不用背包,旅行箱更方便,真要随身带东西,弄个25~40升的就绰绰有馀西藏旅游必备用品:太阳镜、太阳帽、防晒霜、护肤霜、润唇膏、长袖上衣、毛衣;对于特殊旅游或去阿里、藏北、川藏线旅游,建议带:睡袋(防寒)、床单(防脏)、羽绒服、旅游鞋或登山鞋、拖鞋、牙刷、牙膏、毛巾、卷筒纸、纸内裤、消毒湿巾、手电筒、防水火柴、刀具、绳子。前运包能装电脑吗能装电脑,有些背包有

Discuz导航栏个性化定制,让论坛更具特色!Discuz导航栏个性化定制,让论坛更具特色!Mar 11, 2024 pm 01:45 PM

在Discuz论坛中,导航栏是用户访问网站时经常接触到的部分之一,因此定制导航栏可以为论坛增添独特的个性化风格,提升用户体验。接下来将介绍如何在Discuz论坛中进行导航栏的个性化定制,并提供具体的代码示例。首先,我们需要登录到Discuz的后台管理系统,进入“界面”->“导航设置”页面。在这个页面上,我们可以对导航栏进行各种设置和定制。以下是一些

请推荐一款性价比较高的1155针CPU请推荐一款性价比较高的1155针CPUJan 14, 2024 pm 01:30 PM

求推荐1155针的cpu哪个最好当前性能最高的1155针CPU是IntelCorei7-3770K。它拥有4个核心和8个线程,基础频率为3.5GHz,并支持TurboBoost2.0技术,最高可达到3.9GHz。此外,它还搭载了8MB的三级缓存,是一款非常出色的处理器LGA1155针最强的CPUIntel酷睿i73770K。LGA1155接口为二三代酷睿处理器所使用的接口类型,性能最好的为Intel酷睿i73770K,这款处理器参数如下:1.适用类型:台式机;2.CPU系列:酷睿i7;3.CPU

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。