首页 > PHP优化上的奇技淫巧

PHP优化上的奇技淫巧

如何用最简单的方式,实现对php网站的优化?


可以加上缓存 redis memcache 等 一般WEB性能的瓶颈在数据库 mysql的优化也是很重要的
SQL语句可以用explain 看看执行计划 优化SQL 优化索引


这个话题太宽了,个人感觉PHP代码只要不写得太蠢,都不会有太大的问题。网站更需要优化的可能是前端和数据库,前端资源会拖累网站速度,数据库查询更能影响网站的响应速度。感觉后端更多的时间都在于如何优化数据库上。


网站的优化范围太大. 其实优化PHP代码得到的性能提升远不如优化前端. 毕竟网络请求更耗时, 动辄几秒的请求, 更有优化空间, 而PHP代码只要写的不是太烂, 优化的空间没有前端那么大.

前端的优化可以搜索关键词 "yahoo前端优化的黄金法则".
而后端的优化, 设计方式上更有优化空间, 比如说多用缓存, 多用几级缓存, 一句话, 尽量避免查询数据库.
PHP代码本身的优化也有很多, 下面给几条:

  1. 少用include_once/require_once多用include/require, 理由是前者会查找有无载入.所以更耗时.

  2. 使用关联数组的key时, 用引号括起来. 因为没有引号会被当成常量, 如果常量不存在, 就会被转成字符串, 并抛出一个notice级别的错误.

  3. 多用PHP自带函数, 而不是用PHP自己再实现一个.

  4. 写循环语句的时候, 不要在判断条件中使用函数. 这样会使用N次这个函数.

其实还有很多, 只是一时想不起来了. 题主有兴趣可以自己上搜索引擎搜.

而数据库查询语句的优化也是非常重要的. 同样是mysql数据库, 能支撑alibaba/facebook这样的巨型公司, 但是连你的小网站可能都撑不起.


在Oreilly的《PHP编程》中有一段话:

优化执行时间——缩短脚本执行时间有一些小建议:
1、避免使用printf() ,只用echo();
2、避免在循环中重新计算值,因为php不会移除循环不变量。

for($i = 0 ; $i<count($array) ; $i++){
//不要这么做
}
$num = count($array);
for($i = 0 ; $i<$num ; $i++){
//应该这样做
}

3、只包含必要的文件。分离出包含文件中确定要用的函数,将他们放在一起。虽然代码维护多了一点,但解析你不用的代码也是浪费的。
4、如果用了数据库,要使用持久化数据库连接——启动和关闭数据库是比较慢的。
5、当可以用简单的字符串操作函数时,就不要用正则表达式。例如换一个字符,应该str_replace()而不是preg_replace()。

优化内存占用
1、用数字替代字符串

for($i = "0" ; $i<"10" ; $i++){
//不好
}

for($i = 0 ; $i<10; $i++){
//好
}

2、当处理完一个大字符串,把保存字符串的变量设置为空,这会释放内存以便重用;
3、只包含必需的文件。用include_once和require_once,替代include和require。
4、处理完mysql结果集后立刻释放。在内存中保存使用后的结果集没有任何好处。


上PHP7,开ZendOpcache,对WordPress这些复杂一些的PHP Web程序效果明显.


最简单粗暴的做法,开启opcahce

【热门文章】
【热门文章】