切割日志脚本

#!/bin/bash
WORK_DIR=/home/pay/opbin/cut_log
ts=$(date -d '1 hours ago' '+%Y%m%d%H');
for LOGFILE in `sort $WORK_DIR/{logfiles,logfiles_zhengli}|uniq |awk '{print $1}'`
do
 LOG_DIR=`echo $LOGFILE | awk -F "//" '{ print $1 }'`
 LOG_FILE=`echo $LOGFILE | awk -F "//" '{ print $2 }'`
 if [ ! -f $LOG_DIR/$LOG_FILE ]
 then
 echo "Log file $LOGFILE isn't exist.\n" >> cut_log_error.log
 else
 if [[ ! -e $LOG_DIR/$LOG_FILE.$ts ]];then
 #cp $LOG_DIR/$LOG_FILE $LOG_DIR/$LOG_FILE.$ts; echo "" > $LOG_DIR/$LOG_FILE
 mv $LOG_DIR/$LOG_FILE $LOG_DIR/$LOG_FILE.$ts
 fi
 fi
done
发表在 bash | 留下评论

PHP取二进制文件头快速判断文件类型(转载)

介绍:

一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别,PHP扩展中提供了类似 exif_imagetype 这样的函数读取图片类的文件类型,但是很多时候扩展不一定安装了,有时候就需要自己来实现识别文件类型的工作。下面代码就展示了自己通过读取文件头信息来识别文件的真实类型。

', $file_type, ' code:', $type_code, '
'; }

本例输出结果

c:\1.jpg type: jpg code:255216

c:\1.png type: png code:13780

c:\1.gif type: gif code:7173

c:\1.rar type: rar code:8297

c:\1.zip type: zip code:8075

c:\1.exe type: exe code:7790

发表在 php | 留下评论

php提取https内容

对于https用file_get_contents时

PHP Warning:  file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
解决方案:
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

你可以从语义上看出,它是忽略/跳过了SSL安全验证。也许这不是一个很好的做法,但对于普通的场景中,这几经足够了。

下面是利用Curl封装的一个能访问HTTPS内容的函数:

function getHTTPS($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
转载自:http://www.techug.com/php-https
发表在 php | 留下评论

linux解压缩

压缩文件目录:

tar -zcvf link_bank.tar.gz --exclude=./link_bank/data ./link_bank
注:红色目录后面都不能加/,否则会报错
---exclude 是排除哪些目录

排除多个的话就是:

tar -zcvf link_bank.tar.gz --exclude=./link_bank/data1 --exclude=./link_bank/data2 ./link_bank

解压文件:
tar -zxvf link_bank.tar.gz
如果想看下一个压缩文件里面有什么文件可以使用:tar -ztvf *.tar.gz
发表在 bash | 留下评论

php日志监控

<?php

$php_error = ‘/home/users/local/php/log/php_error.log’;

// 获取命令参数
$opts = getopt (“d:” );

// 获取日期
if (isset ( $opts ['d'] )) {
$date = $opts ['d'];
if (false === strptime ( $date, “%Y-%m-%d %H:%M:%S” )) {
echo ‘格式不正确’;
exit(1);
}
} else {
echo ‘参数不正确’;
exit(2);
}

//检查前一分钟的日志
$monitor_date = strftime(“%d\-%b\-%Y %H\:%M”, strtotime($date) – 60);
$pattern = ‘^\[' . $monitor_date . '\:[0-5][0-9]\] PHP (Parse|Fatal) error’;
$cmd = ‘/bin/egrep \” . $pattern . ‘\’ ‘ . $php_error;

exec($cmd, $errors);

if (!empty($errors)) {
print_r($errors);
}



							
发表在 php | 留下评论

php 中回调函数使用方法

比如像array_map、array_filter、array_walk等等都需要回调函数,demo中给我们举的例子是面向过程的方法,但是面向对象的貌似没有。

<?php

// An example callback function
function my_callback_function() {
    echo 'hello world!';
}

// An example callback method
class MyClass {
    static function myCallbackMethod() {
        echo 'Hello World!';
    }
}

// Type 1: Simple callback
call_user_func('my_callback_function');

// Type 2: Static class method call
call_user_func(array('MyClass', 'myCallbackMethod'));

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');

// Type 5: Relative static class method call (As of PHP 5.3.0)
class A {
    public static function who() {
        echo "A\n";
    }
}

class B extends A {
    public static function who() {
        echo "B\n";
    }
}

call_user_func(array('B', 'parent::who')); // A

// Type 6: Objects implementing __invoke can be used as callables (since PHP 5.3)
class C {
    public function __invoke($name) {
        echo 'Hello ', $name, "\n";
    }
}

$c = new C();
call_user_func($c, 'PHP!');
?>
发表在 php | 留下评论

查看磁盘占用情况

查找大于10M的文件
find / -type f -size +10000000c -exec du -sh {} \;
发表在 bash | 留下评论

bash字符串截取

1. 按子串分割截取

${varible#*string}               从左往右,删除最短的一个以string结尾的子串,即截取第一个string子串之后的字符串

${varible##*string}             从左往右,删除最长的一个以string结尾的子串,即截取最后一个string子串之后的字符串

${varible%string*}              从右往左,删除最短的一个以string开头的子串,即截取最后一个string子串之前的字符串

${varible%%string*}          从右往左,删除最长的一个以string开头的子串,即截取第一个string子串之前的字符串

例如:

export TEST=123abc456abc789

echo ${TEST#*abc}          ===>删掉123abc剩下456abc789

echo ${TEST##*abc}       ===>删掉123abc456abc剩下”789

echo ${TEST%abc*}        ===>删掉abc789剩下123abc456

echo ${TEST%%abc*}    ===>删掉abc456abc789剩下123

2. 固定位置截取

${varible:start:len}:截取变量varible从位置start开始长度为len的子串。第一个字符的位置为0。

例如:

export TEST=123abc456abc789

echo ${TEST:0:3}          ===>”123″

echo ${TEST:3:3}           ===>”abc”

发表在 bash | 留下评论

vim中文编码

1、

vim ~/.vimrc

set encoding=gb2312

2、SecureCRT的Session Options>Terminal>Appearance 中设置Character encoding编码:gb2312

发表在 vim | 留下评论

学会知道运算符优先级

运算符优先级
结合方向 运算符 附加信息
非结合 clone new clonenew
[ array()
非结合 ++ – 递增/递减运算符
非结合 ~ – (int) (float) (string) (array) (object) (bool) @ 类型
非结合 instanceof 类型
右结合 ! 逻辑操作符
* / % 算术运算符
+ – . 算术运算符字符串运算符
<< >> 位运算符
非结合 < <= > >= <> 比较运算符
非结合 == != === !== 比较运算符
& 位运算符引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
? : 三元运算符
= += -= *= /= .= %= &= |= ^= <<= >>= 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
, 多处用到
发表在 php | 留下评论