用PHP生成自己的LOG文件


Posted in PHP onOctober 09, 2006

如果你的服务器不容许你读他的LOG文件,那你只好停下来分析你的访问者?做你自己的LOG文件吧!
你仅需做的事情是用PHP计算实际的点击次数,没有错误,没有象'304 Not Modified' 和 'Internal Server Error' 一样的错误。你的代码将生成自己的LOG文件。

<?php

/* 用户定义变量 */
$logfile = "clf.log"; /*LOG文件写到那里 */
$timezone = "+0100"; /* Timezone correction */
$lookup_size = true; /* 设置文件的权限 */
$document_root = "/usr/local/apache/share/htdocs";

/* 他可能或不可能对相同的客户端记数
* 一定要对$document_root 这个变量进行设置才可以工作
*/

function write_to_log($str) {
if($fd = @fopen($GLOBALS[ "logfile"], "a")) {
fputs($fd, $str);
fclose($fd);
}
}

function get_var($name,$default) {
if($var = getenv($name)) {
return $var;
} else {
return $default;
}
}

if($remote_host = get_var( "REMOTE_HOST", false)) {
$remote_host = get_var( "REMOTE_ADDR", "-");
}
$remote_user = get_var( "REMOTE_USER", "-");
$remote_ident = get_var( "REMOTE_IDENT", "-");
$server_port = get_var( "SERVER_PORT", 80);
if($server_port!=80) {
$server_port = ":" . $server_port;
} else {
$server_port = "";
}
$server_name = get_var( "SERVER_NAME", "-");
$request_method = get_var( "REQUEST_METHOD", "GET");
$request_uri = get_var( "REQUEST_URI", "");
$user_agent = get_var( "HTTP_USER_AGENT", "");
if($lookup_size == true && $document_root) {
$filename = ereg_replace( "\?.*", "", $request_uri);
$filename = "$document_root$filename";
if(!$size = filesize($filename)) {
$size = 0;
}
} else {
$size = 0;
}

$date = gmdate( "d/M/Y:H:I:s");
$log = "$remote_host $remote_ident $remote_user [$date $timezone] \"".
"$request_method http://$server_name$server_port$request_uri\" 200 $size\n";

write_to_log($log);

?>

PHP 相关文章推荐
PHP - Html Transfer Code
Oct 09 PHP
PHP 的 __FILE__ 常量
Jan 15 PHP
通过PHP CLI实现简单的数据库实时监控调度
Jul 01 PHP
linux iconv方法的使用
Oct 01 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
php删除数组中重复元素的方法
Dec 22 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
laravel-admin的多级联动方法
Sep 30 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 PHP
PHP7 新增功能
Mar 09 PHP
VFP与其他应用程序的集成
Oct 09 #PHP
PHP中在数据库中保存Checkbox数据(1)
Oct 09 #PHP
分页显示Oracle数据库记录的类之二
Oct 09 #PHP
分页显示Oracle数据库记录的类之一
Oct 09 #PHP
在线竞拍系统的PHP实现框架(一)
Oct 09 #PHP
用在PHP里的JS打印函数
Oct 09 #PHP
在PHP的图形函数中显示汉字
Oct 09 #PHP
You might like
一个基于PDO的数据库操作类
2011/03/24 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
jQuery.each使用详解
2015/07/07 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
react-router实现按需加载
2017/05/09 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
Python中的tuple元组详细介绍
2015/02/02 Python
python实现SOM算法
2018/02/23 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
python如何实现复制目录到指定目录
2020/02/13 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
NET程序员上机面试题
2015/05/23 面试题
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
村委会主任先进事迹
2014/01/15 职场文书
学校就业推荐信范文
2014/05/19 职场文书
微信小程序调用python模型
2022/04/21 Python