优化PHP代码的42条建议没有评论

英文原文:http://reinholdweber.com/?p=3

1. 如果一个方法可静态化,就对它做静态声明。速率可提升至 4 倍。

2. echo 比 print 快。

3. 使用 echo 的多重参数(译注:指用逗号而不是句点)代替字符串连接。

4. 在执行 for 循环之前确定最大循环数,不要每循环一次都计算最大值。

5. 注销那些不用的变量尤其是大数组,以便释放内存。

6. 尽量避免使用 __get,__set,__autoload。

7. require_once() 代价昂贵。

8. 在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。

9. 如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用 $_SERVER[‘REQUEST_TIME’] 要好于 time()。

10. 函数代替正则表达式完成相同功能。

查看更多

MySQL 的字段类型及长度没有评论

数值类型

列类型   需要的存储量
TINYINT 1 字节
SMALLINT 2 字节
MEDIUMINT 3 字节
INT 4 字节
INTEGER 4 字节
BIGINT 8 字节
FLOAT(X) 4 字节(如果 X < = 24 或 8 如果 25 < = X < = 53)
FLOAT 4 字节
DOUBLE 8 字节
DOUBLE PRECISION 8 字节
REAL 8 字节
DECIMAL(M,D) M 字节 (D+2 , 如果M < D)
NUMERIC(M,D) M 字节 (D+2 , 如果M < D)

日期和时间类型

列类型   需要的存储量
DATE 3 字节
DATETIME 8 字节
TIMESTAMP 4 字节
TIME 3 字节
YEAR 1 字节

串类型

列类型   需要的存储量
CHAR(M) M 字节,1 <= M <= 255
VARCHAR(M) L+1 字节, 在此 L <= M 和 1 <= M <= 255
TINYBLOB, TINYTEXT L+1 字节, 在此 L < 2 ^ 8
BLOB, TEXT L+2 字节, 在此 L < 2 ^ 16
MEDIUMBLOB, MEDIUMTEXT L+3 字节, 在此 L < 2 ^ 24
LONGBLOB, LONGTEXT L+4 字节, 在此 L < 2 ^ 32
ENUM('value1','value2',...) 1 或 2 个字节, 取决于枚举值的数目(最大值65535)
SET('value1','value2',...) 1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)

查看更多

PHP 常用的正则表达式没有评论

站长资讯上看到的一个比较全面的 PHP 正则表达式,记一下备用

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配空白行的正则表达式:\n\s*\r

匹配 HTML 标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />

匹配首尾空白字符的正则表达式:^\s*|\s*$

匹配 Email 地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址 URL 的正则表达式:[a-zA-z]+://[^\s]*

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}

查看更多

htaccess 的一些用法没有评论

整理自:5iaspx.com 

屏蔽访问

order allow,deny
deny from abc.com //屏蔽来自 abc.com 的访问
deny from 192.168.1.1 //屏蔽 IP 为 192.168.1.1 的访问
deny from 192.168.1. //屏蔽 IP 范围在 192.168.1.0~192.168.1.255 的访问
allow from all //屏蔽所有的访问来源

防盗链

RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif|jpg)$ - [F]

也可以指定被盗链图的替换图(顺便打打广告什么的),那么上边这段代码最后一行改为

RewriteRule .(gif|jpg)$ http://www.mydomain.com/替代图片文件名 [R,L]

地址转向

旧的URL自动转向到新的地址:
Redirect /旧目录/旧文档名 新文档的地址

或者整个目录的转向:
Redirect 旧目录 新目录

定义缺省的首页文件

DirectoryIndex 新的缺省文件名

也可以列出多个,顺序表明它们之间的优先级别,例如:
DirectoryIndex index.html index.php default.htm