php 记录日志的自定义函数,可以指定日志类型、日志文件、日志的时间格式等。
<?
/**
* 记录一条日志,会以以下三种方式依次尝试写日志。
* - 向当前参数指定的文件写入日志。
* - 尝试向php.ini中指定的error_log写内容。
* - 向系统日志写内容,还是失败的话则返回false。
*
* 不用每次调用时都指定logFile和dateFormat参数
* 系统会自动记住上次指定的内容。
*
* PHP5.0之后请确保已经设置好时区,否则可能会抛出一个错误。
* example:
* @code php
* // 第一次调用,初始化日志,并写入第一条信息。
* logg('init...', LOG_INFO, '/usr/log.txt', 'y-m-d');
* // 写日志
* logg('log msg', LOG_INFO);
* @endcode
*
* @param string $message 日志内容
* @param int $type 日志类型,参照syslog函数的参数
* @param string $logFile 日志文件
* @param string $dateFormat 日志的时间格式
* @return bool 是否成功写入
* @staticvar array $types 参数$type对应的描述信息。
* @staticvar string $file 保存$logFile参数最后次传递的内容。
* @staticvar string $format 保存$dateFormat参数最后传递的内容。
* @link http://www.
*/
function logg($message, $type, $logFile = null, $dateFormat = null)
{
static $types = array(
LOG_EMERG => 'EMERG',
LOG_ALERT => 'ALERT',
LOG_CRIT => 'CRITICAL',
LOG_ERR => 'ERROR',
LOG_WARNING => 'WARNING',
// windows下,以下这三个值是一样的
LOG_NOTICE => 'NOTICE',
LOG_DEBUG => 'DEBUG',
LOG_INFO => 'INFO');
static $file = null;
static $format = 'Y-m-d H:i:s';
if(!is_null($logFile)){ $file = $logFile; }
if(!is_null($dateFormat)){ $format = $dateFormat; }
/* 格式化消息 */
$type = isset()($types[$type]) ? $type : LOG_INFO;
$msg = date($format) . ' [' . $types[$type] . '] ' . $message . PHP_EOL;
if(error_log($msg, 3, $file))
{ return true; }
if(error_log($msg, 0))
{ return true; }
return syslog($type, $message);
}
?>
php计算文件夹大小的函数,返回以KB为单位的数据表示。
<?php
/**
* 计算文件夹大小
* by http://www.
*/
function dirSize($directoty){
$dir_size=0;
if($dir_handle=@opendir($directoty))
{
while($filename=readdir($dir_handle)){
$subFile=$directoty.DIRECTORY_SEPARATOR.$filename;
if($filename=='.'||$filename=='..'){
continue;
}elseif (is_dir($subFile))
{
$dir_size+=dirSize($subFile);
}elseif (is_file($subFile)){
$dir_size+=filesize($subFile);
}
}
closedir($dir_handle);
}
return ($dir_size);
}
$dir_size=dirSize("/var/xxx/");
echo round($dir_size/pow(1024,1),2)."KB";
?>
php 缓存函数。
flush():刷新输出程序缓存
for($i = 0; $i < 5; $i++){
echo str_repeat("\n", 5000);
echo $i;
sleep(1);
flush();
}
ob_start(回调函数,限定长度,随时输出缓存='true'):开启,前提:output_buffer = on
ob_clear():刷新
ob_end_clear():关闭,并刷新
ob_flush():输出
ob_end_flush():关闭,并输出
ob_get_contents:返回缓存
ob_get_clean():返回缓存,并刷新
ob_get_flush():返回缓存,并关闭
ob_get_length():返回缓存内容长度
ob_get_level():返回缓存嵌套级别
ob_get_status(返回所有的=false):返回缓存区状态
ob_gzhandler():压缩输出缓存,用作回调函数:ob_start('ob_gzhandler')
ob_implicit_flush(输出刷新=true):参数为true时,每次缓存输出都会自动刷新缓存
ob_list_handlers():列出所有正在使用缓存的函数。
output_add_rewrite_var(变量,值):添加URL重写器的值此函数给URL重写机制添加名/值对。 这种名值对将被添加到URL(以GET参数的形式)和表单(以input隐藏域的形式),当透明URL
重写用 session.use_trans_sid开启时同样可以添加到session ID。绝对URL(http://example.com/)不被重写,函数行为由url_rewriter.tags php.ini参数控制。
/**
output_add_rewrite_var函数
by http://www.
*/
output_add_rewrite_var('var', 'value');
echo '<a href="/blog_article/file.html">可以重写</a>'; //重写后:<a href="/blog_article/file/var/value.html">link</a>
echo '<a href="http://example.com">link2</a>';//绝对地址不被重写
echo '<form action="/blog_article/script.html" method="post"></form>'; //重写后:<form action="/blog_article/script.html" method="post"><input type="hidden" name="var" value="value" /></form>
?>
output_reset_rewrite_vars():重置URL重写器的值,成功返回true
output_add_rewrite_var('var', 'value');
echo '<a href="/blog_article/file.html">不被重写</a>';
output_reset_rewrite_vars();//重置
echo '<a href="/blog_article/file.html">不被重写</a>';//重置了,地址不被重写
?>