用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中的观察者模式
Mar 24 PHP
关于尾递归的使用详解
May 02 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
phpcms配置列表页以及获得文章发布时间
Jul 04 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 PHP
Laravel中Kafka的使用详解
Mar 24 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
php array_flip() 删除数组重复元素
2009/01/14 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
产品销售员岗位职责
2013/12/18 职场文书
工作决心书范文
2014/03/11 职场文书
平安建设实施方案
2014/03/19 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书