1、下载libmemcached库 地址在https://code.launchpad.net/libmemcached

wget https://launchpad.net/libmemcached/1.0/1.0.18/+do...

2、下载php memcached扩展,地址在http://pecl.php.net/package/memcached

wget http://pecl.php.net/get/memcached-2.2.0.tgz

或者用pecl下载:

pecl download memcached

3、解压

[root@localhost solf]# tar zxvf libmemcached-1.0.18.tar.gz 

[root@localhost solf]# tar zxvf memcached-2.2.0.tgz

4、安装 libmemcached

[root@localhost libmemcached-1.0.18]# ./configure --prefix=/usr/local/libmemcached --with-memcached

[root@localhost libmemcached-1.0.18]# make && make install

5、安装PHPmemcached扩展

运行phpize命令生成configure配置文件

[root@localhost memcached-2.2.0]# phpize

安装,因为机子上可能没有sasl,这里暂时不启用,加上参数--disable-memcached-sasl,否则--enable-sasl

[root@localhost memcached-2.2.0]# ./configure --enable-memcached --with-libmemcached-dir=/usr/local/libmemcached/ --prefix=/usr/local/phpmemcached --with-memcached --disable-memcached-sasl

make && make install

到些安装完成

6、配置php,加载memcahed扩展

extension=memcached.so


今天发现Mysql的主从数据库没有同步

先上Master库:

mysql>show processlist; 查看下进程是否Sleep太多。发现很正常。

show master status; 也正常。

mysql> show master status;

+-------------------+----------+--------------+-------------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+-------------------------------+

| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |

+-------------------+----------+--------------+-------------------------------+

1 row in set (0.00 sec)

再到Slave上查看

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: No

可见是Slave不同步

下面介绍两种解决方法:

方法一:忽略错误后,继续同步

该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

解决:

stop slave;

#表示跳过一步错误,后面的数字可变

set global sql_slave_skip_counter =1;

start slave;

之后再用mysql> show slave status\G 查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

ok,现在主从同步状态正常了。。。

方式二:重新做主从,完全同步

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

解决步骤如下:

1.先进入主库,进行锁表,防止数据写入

使用命令:

mysql> flush tables with read lock;

注意:该处是锁定为只读状态,语句不区分大小写

2.进行数据备份

#把数据备份到mysql.bak.sql文件

[root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql

这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失

3.查看master 状态

mysql> show master status;

+-------------------+----------+--------------+-------------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+-------------------------------+

| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |

+-------------------+----------+--------------+-------------------------------+

1 row in set (0.00 sec)

4.把mysql备份文件传到从库机器,进行数据恢复

#使用scp命令

[root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/

5.停止从库的状态

mysql> stop slave;

6.然后到从库执行mysql命令,导入数据备份

mysql> source /tmp/mysql.bak.sql

7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项

change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;

8.重新开启从同步

mysql> stop slave;

9.查看同步状态

mysql> show slave status\G 查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

好了,同步完成啦。


strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息

可谓是 linux 下的调试利器,不仅可以用来找程序错误,系统为什么挂死了,命令为什么报错,还可以用来查找哪些程序占用系统资源。

命令实例

比如,但网站服务器负载过大,网站数量又多,不知是那个网站占用太多资源,这时strace派上用场了。

第一步,查看 php-cgi 进程号:

ps aux|grep php-cgi

第二步,查看系统调用

strace -p 进程号

或者,将记录结果存在output.txt文件中

strace -o output.txt -T -tt -e trace=all -p 进程号

mac下的命令为dtruss

pstack 看活动的进程内的堆栈

pstack 进程号

用top查看某个进程的信息,top -p 进程号

top之后按P是按cpu使用率排序,M是按内存使用率排序


通常我们用 ls -l 来查看目录下文件,第一列有10个字符,第一个字符就是代表着当前文件的属性,Linux的文件属性有6种

1、d表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写

        注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息

2、l表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式

3、b的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)

4、c表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节

5、p表示该文件为命令管道文件。与shell编程有关的文件

6、s表示该文件为sock文件。与shell编程有关的文件

在php下面可以用 posix_mkfifo('/tmp/test.sock', 0666); 来创建一个管道文件,ulink来删除一个管道文件

用 stream_socket_server("unix:///tmp/test.sock", $errno, $errmsg); 来创建一个 sock文件,ulink('/tmp/test.sock')删除sock文件,记住不是ulink('unix:///tmp/test.sock');


CLOC -- Count Lines of Code

可能大家都知道用 `wc -l` 命令进行代码行数统计,但是它会将代码中的注释、空行所占用的文本行都统计在内。如果想查看一个 tar 包或一个项目目录中“实际”的代码行数并且不愿意自己去写一个脚本来做此类工作,那么可以考虑使用 cloc。

cloc 是一个 perl 脚本,它可以统计很多种编程语言的代码文件中的空行、注释以及实际的代 码行数。

官方地址: http://cloc.sourceforge.net/

安装:

1、找到最新版下载地址并下载

2、解压

tar zxvf cloc-1.62.tar.gz

3、安装

sudo make install

只需上面简单的几部,即可安装好cloc,Linux、Mac下面都亲测成功!

使用

1、统计目录下代码行数

   $ cloc ./
      11 text files.
       6 unique files.                              
       8 files ignored.
    <a href="http://cloc.sourceforge.net">http://cloc.sourceforge.net</a> v 1.62  T=0.18 s (16.5 files/s, 54526.8 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Perl                             2            697           1048           8054
make                             1             26             35             75
-------------------------------------------------------------------------------
SUM:                             3            723           1083           8129
-------------------------------------------------------------------------------

2、统计压缩包代码行数

cloc swoole-src-swoole-1.7.8-stable.tar.gz
     270 text files.
     270 unique files.                                          
      64 files ignored.
http://cloc.sourceforge.net v 1.62  T=1.26 s (163.6 files/s, 29714.1 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               83           3136           2473          21520
C/C++ Header                    22            746            845           3788
PHP                             87            421            393           3118
XML                              1              2              0            490
m4                               1             33              7            202
Go                               3             17              4             76
CMake                            1             16             11             29
C++                              1              6             15             26
YAML                             1              7              1             13
Javascript                       2              2              0             11
make                             2              1              0              5
Python                           1              2              0              5
Bourne Shell                     1              1              0              2
-------------------------------------------------------------------------------
SUM:                           206           4390           3749          29285
-------------------------------------------------------------------------------

3、对比压缩包代码差异

cloc --diff swoole-src-swoole-1.7.8-stable.tar.gz swoole-src-swoole-1.7.9-stable.tar.gz

更多使用方法,请看官网。。。