# $3的位置是IP地址,可按情况修改,如: # [30/Sep/2012:19:14:47 +0800] 110.75.176.58 www.example.com "GET / HTTP/1.1" 200 3629 "-" "Yahoo! Slurp China" cat nginx.log | awk '{print $3}' | sort | uniq -c | sort -nr | less #输出: # 120 189.17.37.109 # 96 12.15.61.22 # 95 12.20.29.33 # 。。。 。。。
Monthly Archives: July 2015
How to Write a Git Commit Message
安装apache+php(fastcgi)
最近有下二次开发的程序,由于源程序使用了zend压缩,提示需要安装 Zend Guard Loader 扩展。而安装zend guard 7后,发现在phpinfo()里检测不到,后来才发现原来zend guard只能使用nfs非安全线程的php,没有办法,重新下载NFS版本的php版本。以下为安装要点:
我用的是WampServer集成环境,于是就想到了把 Apache 换成 FastCGI 模式来跑 PHP5.3 nts 版,这样就可以使用Zend Guard Loader 扩展了。 Continue reading
geohash算法原理及实现方式
mysql中kill掉所有锁表的进程
很多时候由于异常或程序错误会导致个别进程占用大量系统资源,需要结束这些进程,通常可以使用以下命令Kill进程:
3点钟刚睡下, 4点多, 同事打电话告诉我用户数据库挂掉了. 我起床看一下进程列表.
mysql>show process list;
出来哗啦啦好几屏幕的, 没有一千也有几百条, 查询语句把表锁住了, 赶紧找出第一个Locked的thread_id, 在mysql的shell里面执行.
mysql>kill thread_id;
kill掉第一个锁表的进程, 依然没有改善. 既然不改善, 咱们就想办法将所有锁表的进程kill掉吧, 简单的脚本如下.
#!/bin/bash mysql -u root -e "show processlist" | grep -i "Locked" >> locked_log.txt for line in `cat locked_log.txt | awk '{print $1}'` do echo "kill $line;" >> kill_thread_id.sql done
现在kill_thread_id.sql的内容像这个样子
kill 66402982; kill 66402983; kill 66402986; kill 66402991; .....
好了, 我们在mysql的shell中执行, 就可以把所有锁表的进程杀死了.
mysql>source kill_thread_id.sql
当然了, 也可以一行搞定
for id in `mysqladmin processlist | grep -i locked | awk '{print $1}'` do mysqladmin kill ${id} done
如果要查看阻塞语句的话,只需要将上面的”Locked”修改成”Sending”即可。
转自:http://blog.csdn.net/jiangguilong2000/article/details/12198583
检查mysql数据库是否存在坏表
shell脚本检测和检查mysql数据库是否存在坏表
此脚本的主要用途是检测mysql服务器上所有的数据库或者单独数据库中的坏表,适用于RHEL/Centos系列
#!/bin/bash #此脚本的主要用途是检测mysql服务器上所有的db或者单独db中的坏表 #变量说明 pass mysql账户口令 name mysql账号名称 data_path mysql目录路径 directory_list 目录列表 file_list文件列表 db_name 数据库名称 repair_count单库中待修复的表总数 #变量说明 repair_count_all所有库中待修复的表总数 mysql_version mysql版本 _file_name 数据表名称 echo -e "此脚本的主要用途是检测mysql服务器上所有的数据库或者单独数据库中的坏表\n\n" pass=123456 name=root read -p "输入mysql存储路径: " choose data_path=$choose unset choose read -p "请输入mysql命令路径: " mysql_version #标准输入、标准输出、标准错误输出的文件标示符 由 0、1、2标识 read -p "请选择是检查服务器上所有数据库还是指定的数据库 1:检查全部数据库 2:只检查指定数据库: " choose if [ $choose == 1 ]; then cd $data_path for directory_list in $(ls) do if [ -d $directory_list ];then if [ "mysql" != "${directory_list}" -a "test" != "${directory_list}" ];then cd ${directory_list} echo "当前检查数据库为:"${directory_list} for file_list in $(ls *.frm) do _file_name=${file_list%.frm} echo -e "\n" >> /tmp/check_table_all.log ${mysql_version} -h 127.0.0.1 -u${name} -p${pass} -e "check table "${directory_list}.${_file_name} 2>&1 >> /tmp/check_table_all.log done cd .. fi fi done cat /tmp/check_table_all.log | grep "Table is marked as crashed" > /tmp/check_table_repair.log repair_count_all=` awk 'END{print NR}' /tmp/check_table_repair.log ` echo -e "所有数据库用有${repair_count_all}张表需要修复!" more /tmp/check_table_repair.log else read -p "请输入要检查的数据库名称: " db_name cd ${data_path}/${db_name} for file_list in $(ls *.frm) do _file_name=${file_list%.frm} echo -e "\n" >> /tmp/check_${db_name}.log ${mysql_version} -h 127.0.0.1 -u${name} -p${pass} -e "check table "${db_name}.$_file_name 2>&1 >> /tmp/check_${db_name}.log done cat /tmp/check_${db_name}.log | grep "Table is marked as crashed" > /tmp/check_${db_name}_Repair.log repair_count=`awk 'END{print NR}' /tmp/check_${db_name}_Repair.log` echo -e "${db_name}中共有${repair_count}个表需要修复!\n " more /tmp/check_${db_name}_Repair.log fi
yii2笔记
http://www.yiichina.com/doc/guide/2.0/db-active-record
1. ActiveRecord查询方法:
多条记录,如何为单独记录的话,需要将all()修改为 one() 即加。
[php]
$products = Fruit::find()
->select([‘id’, ‘title’, ‘thumb’, ‘url’]) //筛选字段
->where([‘status’ => Fruit::STATUS_ACTIVE]) //过滤条件
->orderBy(‘listorder’) //排序
->asArray() //以数组形式返回
->all();[/php]
2. 使用AR更新记录时,判断findOne()是否找到相应的记录,否则会报错!
[php]// 更新主键为$id的AR
$model = Customer::findOne($id);
if ($model === null) {
throw new NotFoundHttpException;
}
if ($model->load(Yii::$app->request->post()) && $model->save()) {
// 获取用户输入的数据,验证并保存
}[/php]
3.打印上次执行的sql语句
[php]$sql = $record ->createCommand()->getRawSql();[/php]
4.